public void Handle() { if (socket != null) { socket.handle(); while (true) { var msg = socket.getMessage(); if (msg != null) { BinaryReader reader = new BinaryReader(new MemoryStream(msg)); uint cmd = reader.ReadUInt32(); router.Handle(this, 0, cmd, reader); } else { break; } } } else { if (ClientSocket != null) { if (ClientSocket.isError()) { OnError?.Invoke(); ClientSocket = null; } else { socket = ClientSocket.handle(); if (socket != null && OnConnected != null) { OnConnected(); } } } } }