예제 #1
0
    public bool connectTo(string name,string host,int port,NetStateChanged stateCallBack)
    {
        PomeloClient pclient = new PomeloClient();

        if (addClient (name, pclient)) {

            //listen on network state changed event
            pclient.NetWorkStateChangedEvent += (state) =>
            {
                string clientName = namesByClient[pclient];
                switch (state) {
                case NetWorkState.ERROR:
                    {
                        stateCallBack(clientName,SocketNetState.ERROR);
                    }break;
                    case NetWorkState.CLOSED:
                    {
                        stateCallBack(clientName,SocketNetState.CLOSED);
                    }break;
                    case NetWorkState.TIMEOUT:
                    {
                        stateCallBack(clientName,SocketNetState.TIMEOUT);
                    }break;
                    case NetWorkState.CONNECTED:
                    {
                        stateCallBack(clientName,SocketNetState.CONNECTED);
                    }break;
                    case NetWorkState.CONNECTING:
                    {
                        stateCallBack(clientName,SocketNetState.CONNECTING);
                    }break;
                    case NetWorkState.DISCONNECTED:
                    {
                        stateCallBack(clientName,SocketNetState.DISCONNECTED);
                    }break;
                }
            };

            pclient.initClient(host, port, () =>
            {
                //The user data is the handshake user params
                JsonObject user = new JsonObject();
                pclient.connect(user, data =>
                {
                    //process handshake call back data
                });
            });

            return true;
        } else {
            return false;
        }
    }
예제 #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            var client = new PomeloClient();
            userData.client = client;
            client.NetWorkStateChangedEvent += (state) =>
            {
                statusLbl.Text = "network state change:" + state;
            };

            statusLbl.Text = "client initating";

            var newThread = new Thread(new ThreadStart(() =>
            {
                statusLbl.Text = "Begin login";
                var baseUrl = "http://" + serverHostCb.SelectedItem.ToString() + ":3003/";
                var requestUrl = "";
                var requestBody = "";
                if (tabControl1.SelectedIndex == 0)
                {
                    requestUrl = baseUrl + "login";
                    requestBody = "{" + String.Format("\"username\":\"{0}\",\"password\":\"{1}\"", usernameTb.Text, passwordTb.Text) + "}";
                }
                else
                {
                    requestUrl = baseUrl + "bindLogin";
                    requestBody = "{" + String.Format("\"platform\":\"{0}\",\"bindId\":\"{1}\"", platformCb.SelectedItem.ToString(), bindidTb.Text) + "}";
                }

                var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl);
                request.ContentType = "application/json; charset=utf-8";
                request.Accept = "application/json, text/javascript, */*";
                request.Method = "POST";
                try
                {
                    using (var writer = new StreamWriter(request.GetRequestStream()))
                    {
                        writer.Write(requestBody);
                    }
                }
                catch (Exception)
                {
                    statusLbl.Text = "no internet";
                    return;
                }

                var response = request.GetResponse();
                var stream = response.GetResponseStream();
                string json = "";

                using (var reader = new StreamReader(stream))
                {
                    while (!reader.EndOfStream)
                    {
                        json += reader.ReadLine();
                    }
                }

                dynamic loginResult = SimpleJson.SimpleJson.DeserializeObject(json);
                userData.ResultString = loginResult.ToString();
                if (loginResult.code != 200)
                {
                    statusLbl.Text = "login error:" + Convert.ToInt32(loginResult["code"]);
                    return;
                }
                else
                {
                    userData.Uid = loginResult.uid;
                    userData.Token = loginResult.token;
                }

                client.initClient(serverHostCb.SelectedItem.ToString(), Convert.ToInt32(portTb.Text),
                    () =>
                    {
                        statusLbl.Text = "client connecting";
                        client.connect(null, data =>
                        {
                            statusLbl.Text = "client connected";
                            statusLbl.Text += data.ToString();
                            Console.WriteLine("on data back" + data.ToString());
                            var msg = new JsonObject();
                            msg["uid"] = userData.Uid;
                            client.request("gate.gateHandler.queryEntry", msg, OnQuery);
                        });
                    });
            }));
            newThread.Start();
        }