// Static public static ORTimer Execute(GameObject target, float duration, string message) { GameObject go = new GameObject("ORTimer"); ORTimer timer = go.AddComponent <ORTimer>(); timer.target = target; timer.duration = duration; timer.message = message; go.transform.parent = target.transform; return(timer); }
private void Update() { while (_events.Count > 0) { ORTCPEventType eventType = _events.Dequeue(); ORTCPEventParams eventParams = new ORTCPEventParams(); eventParams.eventType = eventType; eventParams.client = this; eventParams.socket = _client; if (eventType == ORTCPEventType.Connected) { if (verbose) { print("[{name}] Connnected to server"); } if (serverDelegate != null) { serverDelegate.OnServerConnect(eventParams); } Send(isShowControl?"100":GameManager.StatusMsgBackup); } else if (eventType == ORTCPEventType.Disconnected) { if (verbose) { print("[{name}] Disconnnected from server"); } if (serverDelegate != null) { serverDelegate.OnClientDisconnect(eventParams); } _reader.Close(); _writer.Close(); _client.Close(); if (autoConnectOnDisconnect) { ORTimer.Execute(gameObject, disconnectTryInterval, "OnDisconnectTimer"); } } else if (eventType == ORTCPEventType.DataReceived) { if (socketType == ORTCPSocketType.Text) { eventParams.message = _messages.Dequeue(); if (verbose) { print("[{name}] DataReceived: " + eventParams.message); } if (OnTCPMessageRecived != null) { OnTCPMessageRecived(eventParams); } } else { eventParams.packet = _packets.Dequeue(); } if (serverDelegate != null) { serverDelegate.OnDataReceived(eventParams); } } else if (eventType == ORTCPEventType.ConnectionRefused) { if (verbose) { print("[{name}] ConnectionRefused... will try again..."); } if (autoConnectOnConnectionRefused) { ORTimer.Execute(gameObject, connectionRefusedTryInterval, "OnConnectionRefusedTimer"); } } } }
private void OnConnectionRefusedTimer(ORTimer timer) { Connect(); }
private void OnDisconnectTimer(ORTimer timer) { Connect(); }
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"); } } }); }