/// <inheritdoc />
        public void ConnectTo(string serverAddress, int port)
        {
            if (client != null)
            {
                if (client.Host == serverAddress &&
                    client.Port == port)
                {
                    Debug.Log($"Client already created: {client.Host}:{client.Port}");
                    return;
                }
                else
                {
                    Debug.Log($"Disconnecting existing client {client.Host}:{client.Port}");
                    client.Stop();
                    client.Connected    -= OnClientConnected;
                    client.Disconnected -= OnClientDisconnected;
                    client = null;
                }
            }

            Debug.LogFormat($"Connecting to {serverAddress}:{port}");
            client               = SocketerClient.CreateSender(SocketerClient.Protocol.TCP, serverAddress, port);
            client.Connected    += OnClientConnected;
            client.Disconnected += OnClientDisconnected;
            client.Start();
        }
 private void OnDisable()
 {
     socketer.Stop();
     socketer.Connected    -= Socketer_Connected;
     socketer.Disconnected -= Socketer_Disconnected;
     socketer.Message      -= Socketer_Message;
     socketer = null;
 }
예제 #3
0
 protected void DoStopListening(ref SocketerClient listener)
 {
     if (listener != null)
     {
         Debug.Log("Stopped listening on port " + listener.Port);
         listener.Stop();
         listener = null;
     }
 }
예제 #4
0
        /// <summary>
        /// Disconnect all connections
        /// </summary>
        public void DisconnectAll()
        {
            // Make sure the client stops before attempting to disconnect
            // anything else. Otherwise, a race condition could cause the client
            // to automatically reconnect to the disconnected endpoints.
            if (client != null)
            {
                client.Stop();
                client = null;
            }

            if (clientConnection != null)
            {
                clientConnection.Disconnect();
                clientConnection = null;
            }

            foreach (SocketEndpoint endpoint in serverConnections.Values)
            {
                endpoint.Disconnect();
            }
            serverConnections.Clear();
        }
        private void OnClientDisconnected(SocketerClient client, int sourceId, string hostAddress)
        {
            if (clientConnection != null)
            {
                Debug.Log("Client disconnected");
                clientConnection.SetIncomingMessageQueue(null);
                oldConnections.Enqueue(clientConnection);
                clientConnection = null;
            }

            if (!AttemptReconnectWhenClient)
            {
                Debug.Log("Stopping subscriptions to disconnected client");
                client.Stop();
                client.Connected    -= OnClientConnected;
                client.Disconnected -= OnClientDisconnected;

                if (this.client == client)
                {
                    Debug.Log("Clearing client cache");
                    this.client = null;
                }
            }
        }