Esempio n. 1
0
 public void Join()
 {
     try
     {
         _is_running = verification() ? true : throw new Exception($"{Id} is not chat client.");
         while (IsClientConnected() && _is_running)
         {
             if (_stream.DataAvailable)
             {
                 // десиарелизация сообщения
                 BinaryFormatter formatter  = new BinaryFormatter();
                 ClientMessage   newMessage = (ClientMessage)formatter.Deserialize(_stream);
                 ClientOutgoingMessageEvent?.Invoke(this, newMessage);
             }
             Thread.Sleep(10);
         }
     }
     catch (Exception ex)
     {
         _is_running = false;
         ClientErrorEvent?.Invoke(this, ex);
     }
     finally
     {
         _tcp_client?.Close();
         ClientDisconnectEvent?.Invoke(this, null);
     }
 }
Esempio n. 2
0
        public override void OnClientDisconnect(NetworkConnection conn)
        {
            CallbackLog($"OnClientDisconnect({conn})");

            base.OnClientDisconnect(conn);

            ClientDisconnectEvent?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 3
0
 public override void OnLobbyClientDisconnect(NetworkConnection conn)
 {
     Debug.Log("LobbyManager : OnClientDisconnect");
     if (ClientDisconnectEvent != null)
     {
         ClientDisconnectEvent.Invoke();
     }
 }
Esempio n. 4
0
        public static void EventHandler(string script)
        {
            var e = new ClientDisconnectEvent(script);

            switch (script)
            {
            case BEFORE_DISCONNECT:    BeforeClientDisconnect(e); break;

            case AFTER_DISCONNECT:     AfterClientDisconnect(e); break;

            default: break;
            }
        }
Esempio n. 5
0
        private void Disconnect()
        {
            ClientDisconnectEventArgs e1 = new ClientDisconnectEventArgs(_socket.RemoteEndPoint.ToString());

            ClientDisconnectEvent.OnClientDisconnect(e1);

            settings.ClientsConnected--;
            Logger.AddLog(new LogInfo("Client disconnected", _socket.RemoteEndPoint.ToString().Split(':')[0]));

            _socket.Disconnect(false);
            if (DisconnectHandle != null)
            {
                DisconnectHandle(this);
            }
            MaxConnections.Disconnect(_socket.RemoteEndPoint);
        }
Esempio n. 6
0
        private void OnClientDisconnectInternal(RawClient client, DisconnectEventArgs args)
        {
            bool ok = false;

            lock ( m_Clients ) {
                if (m_Clients.Contains(client))
                {
                    client.DisconnectEvent -= OnClientDisconnectInternal;
                    client.ConnectEvent    -= OnClientConnectInternal;
                    m_Clients.Remove(client);
                    ok = true;
                }
            }
            if (ok)
            {
                OnClientDisconnect(client, args);
                if (ClientDisconnectEvent != null)
                {
                    ClientDisconnectEvent.Invoke(client, args);
                }
            }
        }
        public void OnClientDisconnect(ClientDisconnectEvent e)
        {
            string instance = "AUTH";

            if (e.DestinationPort == Server.Instance.WorldPort)
            {
                instance = "WORLD";
            }

            Server.Instance.Logger.Log("A client disconnected from " + instance + ". address=" + e.SourceAddress + " port=" + e.SourcePort);

            if (e.DestinationPort == Server.Instance.WorldPort)
            {
                Session session = Server.Instance.SessionManager.GetSession(e.SourceAddress, e.SourcePort);

                if (session != null)
                {
                    CharacterHelper.SaveCharacter(session);

                    Server.Instance.SessionManager.DeleteSession(session);
                }
            }
        }
 public static void InvokeClientDisconnectEvent(ClientDisconnectEventArgs args)
 {
     ClientDisconnectEvent?.Invoke(args);
 }
Esempio n. 9
0
 /// <summary>
 /// 触发服务器断开连接事件
 /// </summary>
 private void OnServerDisconnected()
 {
     _tcpListener.Dispose();
     ClientDisconnectEvent?.Invoke(this);
 }
Esempio n. 10
0
 /// <summary>
 /// 断开连接时触发
 /// </summary>
 private void OnClientDisconnect()
 {
     Dispose();
     ClientDisconnectEvent?.Invoke(this);
 }
 /// <summary>
 /// 断开连接时触发
 /// </summary>
 private void OnClientDisconnect()
 {
     ClientDisconnectEvent?.Invoke(this);
 }