void Start()
    {
        isListening    = false;
        newConnections = new Queue <NewConnection>();
        clients        = new Dictionary <int, ORTCPClient>();
        StartListening();

        Observable
        .Interval(TimeSpan.FromSeconds(1))
        .Where(x => newConnections.Count > 0)
        .Subscribe(x =>
        {
            NewConnection newConnection = newConnections.Dequeue();
            ORTCPClient client          = ORTCPClient.CreateClientInstance("MultiserverClient", newConnection.tcpClient, this);

            int clientId = SaveClient(client);
            TCPEventParams eventParams = new TCPEventParams();
            eventParams.eventType      = eTCPEventType.Connected;
            eventParams.client         = client;
            eventParams.clientID       = clientId;
            eventParams.socket         = newConnection.tcpClient;

            if (verbose)
            {
                print("[TCPServer] New Client Connected: " + client.name);
            }
        });
    }
    public void OnClientDisconnect(TCPEventParams eventParams)
    {
        if (verbose)
        {
            print("[TCPSever] OnClientDisconnect.");
        }

        eventParams.clientID = GetClientID(eventParams.client);
        RemoveClient(eventParams.client);
    }
    public void OnDataReceived(TCPEventParams eventParams)
    {
        if (verbose)
        {
            print("[TCPSever] OnDataReceived");
        }
        eventParams.clientID = GetClientID(eventParams.client);

        if (OnTCPMessageReceived != null)
        {
            OnTCPMessageReceived(eventParams);
        }
    }
 /// <summary>
 /// Determine what to do with the received event paramters.
 /// Message string can be parsed and used to delegate commands and what not.
 /// </summary>
 /// <param name="eventParams"></param>
 private void OnTCPMessage(TCPEventParams eventParams)
 {
 }
 public void OnServerConnect(TCPEventParams eventParams)
 {
 }
 private void OnTCPServerMessageReceived(TCPEventParams eventParams)
 {
 }
Esempio n. 7
0
    void Start()
    {
        if (!this.IsConnected)
        {
            Connect();
        }

        Observable
        .Interval(TimeSpan.FromSeconds(1))
        .Where(x => eventQueue.Count > 0)
        .Subscribe(x =>
        {
            eTCPEventType eventType = eventQueue.Dequeue();

            TCPEventParams eventParams = new TCPEventParams();
            eventParams.eventType      = eventType;
            eventParams.client         = this;
            eventParams.socket         = client;

            if (eventType == eTCPEventType.Connected)
            {
                if (serverDelegate != null)
                {
                    serverDelegate.OnServerConnect(eventParams);
                }
            }
            else if (eventType == eTCPEventType.Disconnected)
            {
                if (serverDelegate != null)
                {
                    serverDelegate.OnClientDisconnect(eventParams);
                }

                streamReader.Close();
                streamWriter.Close();
                client.Close();
            }
            else if (eventType == eTCPEventType.DataReceived)
            {
                if (socketType == eTCPSocketType.Text)
                {
                    eventParams.message = messageQueue.Dequeue();

                    if (OnTCPMessageReceived != null)
                    {
                        OnTCPMessageReceived(eventParams);
                    }
                }
                else if (socketType == eTCPSocketType.Binary)
                {
                    eventParams.packet = packetsQueue.Dequeue();
                }

                if (serverDelegate != null)
                {
                    serverDelegate.OnDataReceived(eventParams);
                }
            }
            else if (eventType == eTCPEventType.ConnectionRefused)
            {
                if (verbose)
                {
                    print("[TCPClient] Connection refused. Trying again...");
                }

                if (autoConnectOnConnectionRefused)
                {
                    ORTimer.Execute(this.gameObject, connectionRefusedTryInterval, "OnConnectionRefusedTimer");
                }
            }
        });
    }