Пример #1
0
        public static void OnReceiveFromWebSocket(WebSocketClient client, byte[] data, int length)
        {
            try {
                switch ((char)data [0]) {
                // Reconnect
                    case 'R':
                        {
                            if (client.UOSocket != null && client.UOSocket.Connected)
                                client.UOSocket.Close ();
                            goto case 'C';
                        }

                // Connect
                    case 'C':
                        {
                            string[] strData = Encoding.ASCII.GetString (data, 0, data.Length).Split (' ');
                            for (int i = 0; i < strData.Length; i++)
                                Console.Write (strData [i] + ",");
                            client.UOSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                            Console.WriteLine (string.Join (",", strData));
                            client.UOSocket.BeginConnect (strData [1], int.Parse (strData [2]), new AsyncCallback (UOConnectCallback), client);
                            break;
                        }

                // Version
                    case 'V':
                        {
                            GameProxy.Send (client, "Version {0}", UOJS.Version);
                            break;
                        }

                    default:
                        {
                            client.UOSocket.BeginSend (data, 0, data.Length, SocketFlags.None, new AsyncCallback (UOSendCallback), client);
                            break;
                        }
                }
            } catch (Exception e) {
                UOJS.Log ("Client [d/c]: Threw {0}... closing!", e.GetType ());
                UOJS.Log (e.StackTrace);
                client.Close ();
            }
        }