public static void DisconnectConnection(NetConnection sender, Scene scene) { NetServer server = ServerNetworkSceneComponent.GetNetServer(); LoginManagerServer login = MapContainer.GetLoginByID(sender.RemoteUniqueIdentifier); if (login != null) { CharacterPlayer characterPlayer = login.GetCharacter(); //Saves data to SQL database string characterString = Newtonsoft.Json.JsonConvert.SerializeObject(characterPlayer, new StringEnumConverter()); SQLManager.UpdateToSQL(login.username, characterString); //removes login manager MapContainer.RemoveLoginByID(login.GetUniqueID()); if (characterPlayer != null) { //removes entity CharacterManager.RemoveCharacterFromScene(scene, characterPlayer._name); } } //removes the connection sender.Disconnect("Closed"); Console.WriteLine("Disconnected! Connected: " + ServerNetworkSceneComponent.GetNetServer().ConnectionsCount); MainScene.ConnectedCount.SetText("Current connections: " + server.ConnectionsCount); }
private void CheckIfConnected() { if (ServerNetworkSceneComponent.GetNetServer().Connections.Find(c => c.RemoteUniqueIdentifier.Equals(loginManager.GetUniqueID())) == null) { //HashSet<LoginManagerServer> characterlist = CharacterManager.GetLoginManagerServerList(); //characterlist.Remove(loginManager); //CharacterManager.RemoveLoginManagerServerFromList(loginManager); //Entity.Destroy(); } }
private void ConnectionChange(NetIncomingMessage message) { if (message.SenderConnection.Status == NetConnectionStatus.Connected || message.SenderConnection.Status == NetConnectionStatus.RespondedConnect) { Debug.WriteLine("New connection!"); } if (message.SenderConnection.Status == NetConnectionStatus.Disconnected) { OnDisconnected(message.SenderConnection); } MainScene.ConnectedCount.SetText("Current connections: " + ServerNetworkSceneComponent.GetNetServer().ConnectionsCount); }
public void CheckForMessageAvailable() { NetIncomingMessage message; NetServer server = ServerNetworkSceneComponent.GetNetServer(); if ((message = server.ReadMessage()) != null) { if (message.MessageType == NetIncomingMessageType.ConnectionApproval) { message.SenderConnection.Approve(); } CheckForMessage(message); } }
public static void SendStringToUniqueID(Scene scene, string message, long UniqueID, MessageType type) { MessageTemplate temp = new MessageTemplate(message, type); NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp)); var connections = ServerNetworkSceneComponent.GetNetServer().Connections; NetConnection reciever = connections.Find(c => c.RemoteUniqueIdentifier.Equals(UniqueID)); if (reciever != null) { NetSendResult result = reciever.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableUnordered, 1); int size; int free; reciever.GetSendQueueInfo(NetDeliveryMethod.ReliableUnordered, 1, out size, out free); if (free < -size) { DisconnectConnection(reciever, scene); } } }
private void LoginAttempt(NetIncomingMessage message, MessageTemplate template) { LoginManagerServer LoginManagerServerUser = Newtonsoft.Json.JsonConvert.DeserializeObject <LoginManagerServer>(template.JsonMessage, new StringEnumConverter()); LoginManagerServerUser.SetUniqueID(message.SenderConnection.RemoteUniqueIdentifier); Console.WriteLine("Login attempt by: " + LoginManagerServerUser.username); NetConnection sender = message.SenderConnection; if (SQLManager.CheckIfExistInSQL(LoginManagerServerUser.username)) { //true if logged in bool success = LoginManagerServerUser.SetupLogin(); Entity e = Scene.FindEntity(LoginManagerServerUser.GetCharacter()._name); if (success && e == null) { Console.WriteLine("Logged in with \"" + LoginManagerServerUser.username + "\" to Database"); string characterString = Newtonsoft.Json.JsonConvert.SerializeObject(LoginManagerServerUser.GetCharacter(), new StringEnumConverter()); MessageTemplate TempMessageTemplate = new MessageTemplate(characterString, MessageType.LoginSuccess); //Returns the character to the player NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(TempMessageTemplate, new StringEnumConverter())); sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0); MapContainer.AssignLogin(Scene, LoginManagerServerUser); } else { MessageTemplate temp = new MessageTemplate("Failure.", MessageType.LoginFailure); NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp, new StringEnumConverter())); sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0); } } else { MessageTemplate temp = new MessageTemplate("Failure.", MessageType.LoginFailure); NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp, new StringEnumConverter())); sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0); } }