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) { }
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"); } } }); }