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); } }
//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."); } }); }
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); }