コード例 #1
0
        void HandleChatMsg(InsightNetworkMessage netMsg)
        {
            if (server.logNetworkMessages)
            {
                Debug.Log("[ChatServer] - Received Chat Message.");
            }

            ChatMsg message = netMsg.ReadMessage <ChatMsg>();

            if (authModule != null)
            {
                //Inject the username into the message
                message.Origin = authModule.GetUserByConnection(netMsg.connectionId).username;

                foreach (UserContainer user in authModule.registeredUsers)
                {
                    server.SendToClient(user.connectionId, (short)MsgId.Chat, message);
                }
            }

            //No Authentication Module. Simple Echo
            else
            {
                //Broadcast back to all other clients
                server.SendToAll((short)MsgId.Chat, message);
            }
        }
コード例 #2
0
ファイル: MasterSpawner.cs プロジェクト: SoftwareGuy/Insight
        //Instead of handling the msg here we will forward it to an available spawner.
        void HandleSpawnRequestMsg(InsightNetworkMessage netMsg)
        {
            if (registeredSpawners.Count == 0)
            {
                logger.LogWarning("[MasterSpawner] - No Spawner Regsitered To Handle Spawn Request");
                return;
            }

            RequestSpawnStartMsg message = netMsg.ReadMessage <RequestSpawnStartMsg>();

            //Get all spawners that have atleast 1 slot free
            List <SpawnerContainer> freeSlotSpawners = new List <SpawnerContainer>();

            foreach (SpawnerContainer spawner in registeredSpawners)
            {
                if (spawner.CurrentThreads < spawner.MaxThreads)
                {
                    freeSlotSpawners.Add(spawner);
                }
            }

            //sort by least busy spawner first
            freeSlotSpawners = freeSlotSpawners.OrderBy(x => x.CurrentThreads).ToList();
            server.SendToClient(freeSlotSpawners[0].connectionId, message, (reader) =>
            {
                RequestSpawnStartMsg callbackResponse = reader.ReadMessage <RequestSpawnStartMsg>();

                if (callbackResponse.Status == CallbackStatus.Success)
                {
                    logger.Log("[Spawn Callback] Game Created on Child Spawner: " + callbackResponse.UniqueID);

                    //If callback from original message is present
                    if (netMsg.callbackId != 0)
                    {
                        netMsg.Reply(callbackResponse);
                    }
                }
                if (callbackResponse.Status == CallbackStatus.Timeout)
                {
                    logger.Log("[Spawn Callback] Createion Timed Out: " + callbackResponse.UniqueID);
                }
                if (callbackResponse.Status == CallbackStatus.Error)
                {
                    logger.Log("[Spawn Callback] Error in SpawnRequest.");
                }
            });
        }
コード例 #3
0
 protected virtual bool TransportSend(byte[] bytes)
 {
     if (client != null)
     {
         client.Send(bytes);
         return(true);
     }
     else if (server != null)
     {
         return(server.SendToClient(connectionId, bytes));
     }
     return(false);
 }