예제 #1
0
        public static void HandleConnectionEnd(ClientObject client, byte[] messageData)
        {
            string reason = "Unknown";

            using (MessageReader mr = new MessageReader(messageData))
            {
                reason = mr.Read <string>();
            }
            DarkLog.Debug(client.playerName + " sent connection end message, reason: " + reason);
            ClientHandler.DisconnectClient(client);
        }
예제 #2
0
        public static void CheckHeartBeat(ClientObject client)
        {
            long currentTime = Server.serverClock.ElapsedMilliseconds;

            if ((currentTime - client.lastReceiveTime) > Common.CONNECTION_TIMEOUT)
            {
                //Heartbeat timeout
                DarkLog.Normal("Disconnecting client " + client.playerName + ", endpoint " + client.endpoint + ", Connection timed out");
                ClientHandler.DisconnectClient(client);
            }
            else
            {
                if (client.sendMessageQueueHigh.Count == 0 && client.sendMessageQueueSplit.Count == 0 && client.sendMessageQueueLow.Count == 0)
                {
                    if ((currentTime - client.lastSendTime) > Common.HEART_BEAT_INTERVAL)
                    {
                        Messages.Heartbeat.Send(client);
                    }
                }
            }
        }