コード例 #1
0
    private PomeloClient createConnect()
    {
        PomeloClient connection = new PomeloClient();

        connection.on("onTick", msg =>
        {
            Debug.unityLogger.Log("onTick:" + msg.rawString);
        });

        //listen on network state changed event
        connection.on(PomeloClient.DisconnectEvent, msg =>
        {
            //网络错误,诸如已经掉线等等
            Debug.unityLogger.Log("Network error, reason: " + msg.jsonObj["reason"]);
            if (_disconnectCallback != null)
            {
                _disconnectCallback(msg);
            }
        });

        connection.on(PomeloClient.ErrorEvent, msg =>
        {
            //没网
            Debug.unityLogger.Log("Error, reason: " + msg.jsonObj ["reason"]);
            if (_errorCallback != null)
            {
                _errorCallback(msg);
            }
        });

        return(connection);
    }
コード例 #2
0
    void Start()
    {
        chatRecords = new ArrayList();
        userList    = new ArrayList();
        chatWindow  = new Rect(0, 0, Screen.width - 150, Screen.height);
        usersWindow = new Rect(Screen.width - 150, 0, 200, Screen.height);
        pomelo_label_Style.normal.textColor = Color.red; // ºìÉ«ÏÔʾ

        InitUserWindow();

        pclient.on("onAdd", (data) =>
        {
            RefreshUserWindow("add", data);
        });

        pclient.on("onLeave", (data) =>
        {
            RefreshUserWindow("leave", data);
        });

        pclient.on("onChat", (data) =>
        {
            addMessage(data);
        });
    }
コード例 #3
0
    void Start()
    {
        chatRecords = new ArrayList();
        userList    = new ArrayList();
        chatWindow  = new Rect(0, 0, Screen.width - 150, Screen.height);
        usersWindow = new Rect(Screen.width - 150, 0, 200, Screen.height);
        //pomelo_label_Style.normal.textColor = Color.black;

        Color textColor;

        ColorUtility.TryParseHtmlString("#18B65AFF", out textColor);
        pomelo_label_Style.normal.textColor = textColor;

        InitUserWindow();

        pclient.on("onAdd", (data) =>
        {
            Debug.Log("onAdd message");
            RefreshUserWindow("add", data);
        });

        pclient.on("onLeave", (data) =>
        {
            RefreshUserWindow("leave", data);
        });

        pclient.on("onChat", (data) =>
        {
            Debug.Log("onChat message");
            addMessage(data);
        });
    }
コード例 #4
0
    void Start()
    {
        Application.runInBackground = true;

        userlist       = new ArrayList();
        userGameObject = new ArrayList();
        moveRecords    = new ArrayList();

        //
        InitUserWindow();

        pclient.on("onAdd", (data) =>
        {
            RefreshUserWindow("add", data);
        });

        pclient.on("onLeave", (data) =>
        {
            RefreshUserWindow("leave", data);
        });

        //pclient.on("onChat", (data) =>
        //{
        //    addMessage(data);
        //});

        pclient.on("onMove", (data) =>
        {
            addMoveMessage(data);
        });
    }
コード例 #5
0
    //需要手动调用添加服务器push给客户端的消息,不同的界面请添加不同的消息回调
    public void addPushMsgEventListener(LobbyProtocol pID, Action <Message> action)
    {
        System.Object route;

        if (ROUTE_MAP.TryGetValue("P" + (int)pID, out route))
        {
            _connection.on(route.ToString(), action);
        }
    }
コード例 #6
0
    void EventsListen()
    {
        pc.on("onChannelUserOnline", (data) => {
            Debug.Log("onChannelUserOnline " + data);
        });

        pc.on("onLeave", (data) => {
        });

        pc.on("onChat", (data) => {
        });
    }
コード例 #7
0
 private static void startConnect(string host, int port)
 {
     pc = new PomeloClient(host, port);
     pc.connect(null, delegate(JsonObject data) {
         pc.on("onChat", msg => Console.WriteLine(msg["from"] + " : " + msg["msg"]));
         pc.on("onAdd", msg => Console.WriteLine("onAdd : " + msg));
         pc.on("onLeave", msg => Console.WriteLine("onLeave : " + msg));
         pc.on("disconnect", msg => Console.WriteLine("disconnect : " + msg));
         Console.WriteLine("connect to connector " + data.ToString());
         login();
     });
 }
コード例 #8
0
 public static bool onAdd(System.Action <onAdd_event> cb)
 {
     pc.on("onAdd", delegate(JsonData ret)
     {
         onAdd_event result = new onAdd_event();
         if (ret.ContainsKey("user"))
         {
             result.user = (string)ret["user"];
         }
         cb(result);
     }
           );
     return(true);
 }
コード例 #9
0
    void Start()
    {
        Application.runInBackground = true;

        /* ----------------------------------------- */
        //userList = new ArrayList();
        //userList.Add(userName);

        txtRoomId.text = RoomCon.roomid;

        // 该房间有一个新的的用户加入了
        pclient.on("onCommonUserAddToGame", (data) =>
        {
            string tmp     = data.ToString();
            JsonData jdtmp = JsonMapper.ToObject(tmp);

            string newRid = jdtmp["rid"].ToString();
            string uid    = jdtmp["uid"].ToString(); // 该房间的人数

            if (!userList.Contains(uid))
            {
                userList.Add(uid);
            }
        });

        // 玩家中途退出了
        pclient.on("onDelCommonUserInRoom", (data) =>
        {
            string tmp     = data.ToString();
            JsonData jdtmp = JsonMapper.ToObject(tmp);

            string newRid = jdtmp["rid"].ToString();
            string uid    = jdtmp["uid"].ToString(); // 该房间的人数

            if (userList.Contains(uid))
            {
                userList.Remove(uid);
            }
        });

        // 添加按钮的事件监听方法
        btn.onClick.AddListener(msgSend);

        pclient.on("onChat", (data) =>
        {
            addMessage(data);
        });
    }
コード例 #10
0
 public void onUpgrade()
 {
     pclient.on("onUpgrade", (data) => {
         Debug.Log("get update info :" + data.ToString());
         NotificationManager.getInstance().PostNotification(null, Message.MONEY_GOLD_UPDATE);
     });
     pclient.on("onUpgradeHero", (data) => {
         Debug.Log("onUpgradeHero :" + data.ToString());
         HeroManager.getInstance().updateHeroByServer(data);
     });
     pclient.on("onUpgradeBag", (data) => {
         Debug.Log("onUpgradeBag :" + data.ToString());
         BagManager.getInstance().updateItemByServer(data);
         BagManager.getInstance().getGameScene().mainPanel.updateData();
     });
 }
コード例 #11
0
 //注册了 广播事件的 处理逻辑
 public void registBroadcast(string eventName)
 {
     pclient.on(eventName, (data) => {
         data[CallbackFact.ROUTE_KEY_NAME]   = eventName;
         data[BroadcastFact.IS_EVT_KEY_NAME] = true;//表示它是一个 广播事件,
         this.msgQueue.Enqueue(data);
     });
 }
コード例 #12
0
 /// <summary>
 /// add event listener, process broadcast message
 /// </summary>
 /// <param name="eventName">eg: onReceive</param>
 /// <param name="action"></param>
 public void On(string eventName, Action <JsonObject> action)
 {
     m_Conn.on(eventName, (result) =>
     {
         Dispatcher.Current.BeginInvoke(() =>
         {
             action.Invoke(result);
         });
     });
 }
コード例 #13
0
        private static void startConnect(string host, int port)
        {
            pc = new PomeloClient(host, port);
            pc.connect(null, delegate(JsonObject data){
                pc.on("onChat", delegate(JsonObject msg) {
                    Console.WriteLine("{0} : {1}.", msg["from"], msg["msg"]);
                });
                pc.on("onAdd", delegate(JsonObject msg) {
                    Console.WriteLine("user {0} come in to the room.", msg["user"]);
                });
                pc.on("onLeave", delegate(JsonObject msg) {
                    Console.WriteLine("user {0} leave the room", msg["user"]);
                });
                pc.on("disconnect", delegate(JsonObject msg) {
                    Console.WriteLine("disconnect : " + msg);
                });

                //kick ();
                login();
            });
        }
コード例 #14
0
 public bool RegRouterListener(string router, CbFunc cb)
 {
     if (callbacks.ContainsKey(router))
     {
         return(false);
     }
     callbacks.Add(router, cb);
     client.on(router, (rst) =>
     {
         cb(rst);
     });
     return(true);
 }
コード例 #15
0
ファイル: MainWindow.xaml.cs プロジェクト: soulkey99/byserver
 void OnConnect2(object sender, RoutedEventArgs e)
 {
     pc2 = new PomeloClient(host1, port1);
     pc2.connect(null, delegate(JsonObject data) {
         this.Dispatcher.BeginInvoke((Action)(() =>
         {
             this.Status22.Text = "success";
         }));
         Log2("connect success");
     });
     pc2.on("onChat", delegate(JsonObject msg) {
         Log2(msg.ToString());
     });
     pc2.on("onAdd", delegate(JsonObject msg) {
         Log2(msg.ToString());
     });
     pc2.on("onLeave", delegate(JsonObject msg) {
         Log2(msg.ToString());
     });
     pc2.on("disconnect", delegate(JsonObject msg) {
         Log2(msg.ToString());
     });
 }
コード例 #16
0
ファイル: ConnectionManager.cs プロジェクト: PenpenLi/Nav
 /// <summary>
 /// 监听服务器主动对送消息
 /// </summary>
 /// <param name="eventName">Event name.</param>
 /// <param name="action">Action.</param>0
 public void ReceivePushMsg <T>(string eventName, EventDispatcher.EventCallback eventCallback)
 {
     if (pclient == null)
     {
         Debug.Log("pclient is null");
     }
     Debug.Log("=============ReceivePushMsgReceivePushMsgReceivePushMsg==================");
     pclient.on(eventName, delegate(JsonObject resData)
     {
         EventDispatcher.Instance().RegistEventListener(eventName, eventCallback);
         Debug.Log("pushData=" + resData);
         CommonResult <T> commonResult = AnalysisData <T>(resData);
         EventDispatcher.Instance().DispatchEvent(eventName, commonResult);
     });
 }
コード例 #17
0
ファイル: test.cs プロジェクト: v-kter/WizardBattle-Sercer
    // Use this for initialization
    void Start()
    {
        string host = "128.237.211.68";
        int    port = 3010;

        pc = new PomeloClient(host, port);
        pc.connect(null, (data) => {
            JsonObject msg = new JsonObject();
            msg["uid"]     = "hehe";
            pc.request("connector.entryHandler.entry", msg, OnQuery);
        });

        pc.on("onChat", (data) => {
            OnChat(data);
        });
    }
コード例 #18
0
        public static void loginTest(string host, int port)
        {
            pc = new PomeloClient(host, port);
            pc.on (PomeloClient.EVENT_DISCONNECT, onDisconnect);

            pc.connect(null, data=>{

                Console.WriteLine("on data back" + data.ToString());
                JsonObject msg  = new JsonObject();
                msg["uid"] = 111;
                pc.request("gate.gateHandler.queryEntry", msg, OnQuery);
            });

            while(true){
                System.Threading.Thread.Sleep(100);
            };
        }
コード例 #19
0
        private void button1_Click(object sender, EventArgs e)
        {
            this.label3.Text = "开始连接服务器";

            string host = this.textBox1.Text.Trim();
            int    port = int.Parse(this.textBox2.Text.Trim());

            _pomeloClient            = new PomeloClient(host, port);
            _pomeloClient.OnConnect += delegate()
            {
                Console.WriteLine("OnConnect");
            };
            _pomeloClient.OnDisconnect += delegate()
            {
                Console.WriteLine("OnDisconnect");
            };
            _pomeloClient.OnException += delegate(string error)
            {
                Console.WriteLine("OnException = " + error);
            };

            _pomeloClient.on("testOn", (data) =>
            {
                Console.WriteLine("On = " + data.ToString());
            });

            _pomeloClient.connect((data) =>
            {
                this._logStr = "服务器连接成功,返回json:" + data.ToString() + "\n";
                Action del   = () =>
                {
                    this.label3.Text = this._logStr;
                };
                this.label3.Invoke(del, null);

                JsonObject msg = new JsonObject();
                msg["uid"]     = "wy";
                _pomeloClient.request("connector.entryHandler.entry", msg, (ret) =>
                {
                    Console.WriteLine("connector.entryHandler.entry = " + ret.ToString());
                });

                Console.WriteLine("Connected");
            });
        }
コード例 #20
0
        public static void loginTest(string host, int port)
        {
            pc = new PomeloClient(host, port);
            pc.on(PomeloClient.EVENT_DISCONNECT, onDisconnect);

            pc.connect(null, data => {
                Console.WriteLine("on data back" + data.ToString());
                JsonObject msg = new JsonObject();
                msg["uid"]     = 111;
                pc.request("gate.gateHandler.queryEntry", msg, OnQuery);
            });

            while (true)
            {
                System.Threading.Thread.Sleep(100);
            }
            ;
        }
コード例 #21
0
    public PomeloSocket InitClient(string host, int port, Action <JsonObject> cb)
    {
        Disconnect();
        pclient = new PomeloClient();
        pclient.NetWorkStateChangedEvent += (state) =>
        {
            Debug.Log(state);
        };
        pclient.initClient(host, port, () =>
        {
            Connect(cb);
        });

        pclient.on("websocket-error", (data) =>
        {
            Debug.LogError(data);
        });
        return(this);
    }
コード例 #22
0
        /// <summary>
        /// 加入频道
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="channel"></param>
        void JoinChannel(string userName, string channel)
        {
            JsonObject userMessage = new JsonObject();

            userMessage.Add("uid", userName);
            //userMessage.Add("rid", channel);

            if (_pomelo != null)
            {
                //请求加入聊天室
                _pomelo.request("connector.entryHandler.entry", userMessage, (data) =>
                {
                    AppendLog("进入 channel:\n" + FormatJson(data.ToString()));

                    _pomelo.on("onPush", (message) =>
                    {
                        AppendLog("onPush:\n" + FormatJson(message.ToString()));
                    });
                });
            }
        }
コード例 #23
0
        public static void OnQuery(JsonObject result)
        {
            if(Convert.ToInt32(result["code"]) == 200){
                pc.disconnect();

                string host = (string)result["host"];
                int port = Convert.ToInt32(result["port"]);
                pc = new PomeloClient(host, port);
                pc.connect(null, (data)=>{
                    Console.WriteLine("on connect to connector!");
                    pc.on(PomeloClient.EVENT_DISCONNECT, onDisconnect);

                    //Login
                    JsonObject msg  = new JsonObject();
                    msg["username"] = "******";
                    msg["rid"] = "pomelo";

                    pc.request("connector.entryHandler.enter", msg, OnEnter);
                });
            }
        }
コード例 #24
0
        public static void OnQuery(JsonObject result)
        {
            if (Convert.ToInt32(result["code"]) == 200)
            {
                pc.disconnect();

                string host = (string)result["host"];
                int    port = Convert.ToInt32(result["port"]);
                pc = new PomeloClient(host, port);
                pc.connect(null, (data) => {
                    JsonObject userMessage = new JsonObject();
                    Console.WriteLine("on connect to connector!");
                    pc.on(PomeloClient.EVENT_DISCONNECT, onDisconnect);

                    //Login
                    JsonObject msg  = new JsonObject();
                    msg["username"] = "******";
                    msg["rid"]      = "pomelo";

                    pc.request("connector.entryHandler.enter", msg, OnEnter);
                });
            }
        }
コード例 #25
0
    void Start()
    {
        Application.runInBackground = true;

        roomList = new ArrayList();

        // 找到各个控件
        InputField_roomid = GameObject.FindGameObjectWithTag("channel").GetComponent <InputField>();
        btn_create        = GameObject.FindGameObjectWithTag("btn_create").GetComponent <Button>();
        btn_choose        = GameObject.FindGameObjectWithTag("btn_choose").GetComponent <Button>();

        // 添加按钮的事件监听方法
        btn_choose.onClick.AddListener(chooseRoom);
        btn_create.onClick.AddListener(createRoom);

        helloName.text = "Hello: " + userName;

        // 刚进入场景得到的房间列表
        string   s  = roomsObjHave.ToString();
        JsonData jd = JsonMapper.ToObject(s);

        if (jd.Keys.Count >= 1)
        {
            int len = jd["rooms"].Count;
            if (len >= 1)
            {
                ICollection <string> it = jd["rooms"].Keys;
                foreach (string c in it)
                {
                    // 具体的一个房间的情况
                    string   aobj       = jd["rooms"][c].ToJson();
                    JsonData jdobj      = JsonMapper.ToObject(aobj);
                    string   createUser = jdobj["createUser"].ToString();
                    string   num        = jdobj["number"].ToString(); // 人数

                    int intnum = int.Parse(num);
                    if (intnum == 0)
                    {
                        if (roomList.Contains(c))
                        {
                            roomList.Remove(c);
                        }
                    }
                    else
                    {
                        if (hashMap.ContainsKey(c))
                        {
                            hashMap.Remove(c);
                            hashMap.Add(c, num);
                        }
                        else
                        {
                            hashMap.Add(c, num);
                        }
                        if (!roomList.Contains(c))
                        {
                            roomList.Add(c);
                        }
                    }
                }
            }
        }

        // 有新的房间,接收服务器push过来的消息
        pclient.on("onAddRoom", (data) =>
        {
            string tmp     = data.ToString();
            JsonData jdtmp = JsonMapper.ToObject(tmp);

            string newRid = jdtmp["rid"].ToString();
            string num    = jdtmp["num"].ToString(); // 该房间的人数

            if (hashMap.ContainsKey(newRid))
            {
                hashMap.Remove(newRid);
                hashMap.Add(newRid, num);
            }
            else
            {
                hashMap.Add(newRid, num);
            }

            if (!roomList.Contains(newRid))
            {
                roomList.Add(newRid);
            }
        });

        // 某个房间添加了一个新用户
        pclient.on("onAddCommonUser", (data) =>
        {
            string tmp     = data.ToString();
            JsonData jdtmp = JsonMapper.ToObject(tmp);

            string newRid = jdtmp["rid"].ToString();
            string num    = jdtmp["num"].ToString(); // 该房间的人数

            if (hashMap.ContainsKey(newRid))
            {
                hashMap.Remove(newRid);
                hashMap.Add(newRid, num);
            }
            else
            {
                hashMap.Add(newRid, num);
            }

            if (!roomList.Contains(newRid))
            {
                roomList.Add(newRid);
            }
        });

        // 某个房间删除了一个普通用户
        pclient.on("onDelCommonUser", (data) =>
        {
            string tmp     = data.ToString();
            JsonData jdtmp = JsonMapper.ToObject(tmp);

            string newRid = jdtmp["rid"].ToString();
            string num    = jdtmp["num"].ToString(); // 该房间的人数

            int intnum = int.Parse(num);
            if (intnum == 0)
            {
                if (roomList.Contains(newRid))
                {
                    roomList.Remove(newRid);
                }
            }
            else
            {
                if (hashMap.ContainsKey(newRid))
                {
                    hashMap.Remove(newRid);
                    hashMap.Add(newRid, num);
                }
                else
                {
                    hashMap.Add(newRid, num);
                }

                if (!roomList.Contains(newRid))
                {
                    roomList.Add(newRid);
                }
            }
        });
    }
コード例 #26
0
    public ArrayList deleteCards;         // 用来存储上一次出过的牌(可以选择不出牌)

    void Start()
    {
        Application.runInBackground = true;
        //////////////////////////////////////////////////////
        index_CardsCnt       = new Dictionary <int, int>();
        btnStart_Flag        = false;
        GameState            = -1;
        deleteCards          = new ArrayList();
        lastIndexTextContent = "还未开始";
        isFapai          = false;
        userCardNumberGO = null;            //玩家的牌GameObject
        userCardNumber   = new ArrayList(); //玩家的牌
        hashMap          = new Dictionary <int, bool>();

        isReadyUidText  = "";
        isReadyCount    = 0;
        isReadyCnt.text = "Cnt";
        msgPrefab       = Resources.Load <GameObject>("Prefabs/GameObject_1");

        // 添加按钮的事件监听方法
        btn_Out.onClick.AddListener(Btn_OutCards);
        btn_Reset.onClick.AddListener(Btn_ResetCards);
        btn_start.onClick.AddListener(Btn_StartGame);
        btn_Pass.onClick.AddListener(Btn_BuChuPai);

        //mapIndex2.Add(index, userName);
        //mapIndex.Add(userName, index);
        if (mapIndex2.ContainsKey(index))
        {
            mapIndex2[index] = userName;
        }
        else
        {
            mapIndex2.Add(index, userName);
        }

        if (mapIndex.ContainsKey(userName))
        {
            mapIndex[userName] = index;
        }
        else
        {
            mapIndex[userName] = index;
        }

        // pomelo消息监听
        if (pclient != null)
        {
            // 该房间有一个新的的用户加入了
            pclient.on("onCommonUserAddToGame", userAdd);

            // 3个用户都准备好了,开始游戏(发牌,初始数据等等)
            pclient.on("onStartGame", getPuke);

            // 有用户点击了准备按钮
            pclient.on("onReady", readyPuke);

            // 某个用户出牌
            pclient.on("onChupai", Chupai);

            // 某个用户选择了不出牌,服务器也推送消息
            pclient.on("onBuchupai", BuchupaiUI);

            // 游戏结束
            pclient.on("onOver", gameOverUI);
        }

        btnStart_Flag = true;

        if (index == 3) // 如果自己是最后一个进入的,那么准备按钮初始 就是可点击的
        {
            btnStart_Flag = false;
        }

        // 玩家中途退出了,情况有多种情况 ???
        //pclient.on("onDelCommonUserInRoom", (data) =>
        //{
        //    string tmp = data.ToString();
        //    JsonData jdtmp = JsonMapper.ToObject(tmp);

        //    string newRid = jdtmp["rid"].ToString();
        //    string uid = jdtmp["uid"].ToString();

        //});
    }
コード例 #27
0
 public void On(string msg, Action <JsonObject> cb)
 {
     pclient.on(msg, cb);
 }
コード例 #28
0
    void InitHandler()
    {
        NetMgr       net = NetMgr.GetInstance();
        RoomMgr      rm  = RoomMgr.GetInstance();
        PomeloClient pc  = net.pc;

        pc.on("login_result", data => {
            Debug.Log("login_result");

            object ob;
            if (!data.TryGetValue("errcode", out ob))
            {
                return;
            }

            int ret = Convert.ToInt32(ob);
            if (ret != 0)
            {
                Debug.Log("login_result ret=" + ret);
                return;
            }

            JsonObject room = (JsonObject)data["data"];

            rm.updateRoom(room);

            DispatchEvent("game_reset");
        });

        pc.on("login_finished", data => {
            Debug.Log("login_finished");

            string table = "04.table3d";
            string name  = SceneManager.GetActiveScene().name;

            if (name != table)
            {
                mHandlerMap.Clear();
                LoadingScene.LoadNewScene(table);
            }
            else
            {
                if (rm.isPlaying())
                {
                    net.send("ready");
                }
            }
        });

        pc.on("exit_result", data => {
            string reason = (string)data["reason"];

            if (reason == "kick")
            {
                GameAlert.GetInstance().show("您已被管理员请出房间", () => {
                    GameManager.GetInstance().exit();
                });
            }
            else if (reason == "request")
            {
                GameManager.GetInstance().exit();
            }
        });

        pc.on("exit_notify_push", data => {
            int uid       = Convert.ToInt32(data["value"]);
            int seatindex = rm.userExit(uid);

            DispatchEvent("user_state_changed", seatindex);
        });

        pc.on("dispress_push", data => {
            GameManager.GetInstance().exit();
        });

        pc.on("new_user_comes_push", data => {
            int seatindex = rm.newUserCome(data);

            DispatchEvent("user_state_changed", seatindex);
        });

        pc.on("user_state_push", data => {
            int seatindex = rm.updateUser(data);

            DispatchEvent("user_state_changed", seatindex);
        });

        pc.on("game_wait_maima_push", data => {
            rm.updateMaima(data);

            DispatchEvent("game_wait_maima");
        });

        pc.on("game_maima_push", data => {
            rm.updateMaima(data);

            DispatchEvent("game_maima");
        });

        pc.on("user_ready_push", data => {
            int seatindex = rm.updateUser(data);

            DispatchEvent("user_state_changed", seatindex);
        });

        pc.on("game_dice_push", data => {
            rm.updateState(data);

            DispatchEvent("game_dice");
        });

        pc.on("game_holds_push", data => {
            Debug.Log("get game_holds_push");

            int si = rm.updateSeat(data);
            DispatchEvent("game_holds", si);
        });

        pc.on("game_holds_len_push", data => {
            Debug.Log("get game_holds_len_push");

            int si = rm.updateSeat(data);

            DispatchEvent("game_holds_len", si);
        });

        pc.on("game_state_push", data => {
            rm.updateState(data);

            DispatchEvent("game_state");
        });

        pc.on("game_begin_push", data => {
            Debug.Log("get game_begin_push");

            rm.newRound();
            rm.updateState(data);

            foreach (PlayerInfo p in rm.players)
            {
                p.ready = false;
                DispatchEvent("user_state_changed", p.seatindex);
            }

            DispatchEvent("game_begin");
        });

        pc.on("game_playing_push", data => {
            Debug.Log("get game_playing_push");
            rm.updateState(data);

            DispatchEvent("game_playing");
        });

        pc.on("game_sync_push", data => {
            Debug.Log("get game_sync_push");

            if (!data.ContainsKey("pseudo"))
            {
                rm.updateState(data);
                rm.updateSeats((JsonArray)data["seats"]);
            }

            DispatchEvent("user_hf_updated");
            DispatchEvent("game_sync");
        });

        pc.on("hangang_notify_push", data => {
            int seatindex = Convert.ToInt32(data["seatindex"]);
            DispatchEvent("hangang_notify", seatindex);
        });

        pc.on("game_action_push", data => {
            Debug.Log("get game_action_push");
            rm.updateAction(data);

            DispatchEvent("game_action");
        });

        pc.on("game_chupai_push", data => {
            Debug.Log("get game_chupai_push");
            rm.updateState(data);

            ChupaiPush cp = JsonUtility.FromJson <ChupaiPush> (data.ToString());
            rm.updateLimit(cp.turn, cp.limit);

            if (cp.bg == true)
            {
                return;
            }

            DispatchEvent("game_turn_change");
        });

        pc.on("game_num_push", data => {
            rm.updateRoomInfo(data);

            DispatchEvent("game_num");
        });

        pc.on("game_over_push", data => {
            rm.updateOverInfo(data);

            DispatchEvent("game_over");
        });

        pc.on("mj_count_push", data => {
            rm.updateState(data);

            if (data.ContainsKey("bg"))
            {
                return;
            }

            DispatchEvent("mj_count");
        });

        pc.on("hu_push", data => {
            HuPushInfo info = rm.updateHu(data);

            if (info.bg)
            {
                return;
            }

            DispatchEvent("hupai", info);
        });

        pc.on("game_chupai_notify_push", data => {
            Debug.Log("get game_chupai_notify_push");
            ActionInfo info = rm.doChupai(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("game_chupai_notify", info);
        });

        pc.on("game_hf_push", data => {
            rm.updateFlowers(data);

            Debug.Log("get game_hf_push");

            DispatchEvent("user_hf_updated");
        });

        pc.on("game_af_push", data => {
            ActionInfo info = rm.doAddFlower(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("user_hf_updated", info);
        });

        pc.on("game_mopai_push", data => {
            Debug.Log("get game_mopai_push");
            ActionInfo info = rm.doMopai(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("game_mopai", info);
        });

        pc.on("guo_notify_push", data => {
            Debug.Log("get guo_notify_push");
            ActionInfo info = rm.doGuo(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("guo_notify", info);
        });

        pc.on("guo_result", data => {
            Debug.Log("get guo_result");
            DispatchEvent("guo_result");
        });

        pc.on("peng_notify_push", data => {
            ActionInfo info = rm.doPeng(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("peng_notify", info);
        });

        pc.on("chi_notify_push", data => {
            ActionInfo info = rm.doChi(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("chi_notify", info);
        });

        pc.on("gang_notify_push", data => {
            GangInfo info = rm.doGang(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("gang_notify", info);
        });

        pc.on("ting_notify_push", data => {
            TingInfo info = rm.doTing(data);

            if (info.bg == true)
            {
                return;
            }

            DispatchEvent("ting_notify", info.seatindex);
        });

        pc.on("chat_push", data => {
            ChatInfo info = JsonUtility.FromJson <ChatInfo>(data.ToString());

            DispatchEvent("chat", info);
        });

        pc.on("quick_chat_push", data => {
            QuickChatInfo info = JsonUtility.FromJson <QuickChatInfo>(data.ToString());

            DispatchEvent("quick_chat_push", info);
        });

        pc.on("emoji_push", data => {
            EmojiPush info = JsonUtility.FromJson <EmojiPush>(data.ToString());
            DispatchEvent("emoji_push", info);
        });

        pc.on("demoji_push", data => {
            Debug.Log("get demoji_push");
            DEmojiPush info = JsonUtility.FromJson <DEmojiPush>(data.ToString());
            DispatchEvent("demoji_push", info);
        });

        pc.on("dissolve_notice_push", data => {
            DissolveInfo dv = JsonUtility.FromJson <DissolveInfo>(data.ToString());
            rm.dissolve     = dv;

            DispatchEvent("dissolve_notice", dv);
        });

        pc.on("dissolve_done_push", data => {
            Debug.Log("dissolve_done_push");
            DispatchEvent("dissolve_done");
        });

        pc.on("dissolve_cancel_push", data => {
            Debug.Log("dissolve_cancel_push");

            DissolveCancel dc = JsonUtility.FromJson <DissolveCancel>(data.ToString());

            DispatchEvent("dissolve_cancel", dc);
        });

        pc.on("voice_msg_push", data => {
            VoiceMsgPush vm = JsonUtility.FromJson <VoiceMsgPush>(data.ToString());
            DispatchEvent("voice_msg", vm);
        });

        pc.on("start_club_room", data => {
        });

        pc.on("club_room_updated", data => {
            DispatchEvent("club_room_updated", data);
        });

        pc.on("clu_room_removed", data => {
            DispatchEvent("clu_room_removed", data);
        });

        pc.on("club_message_notify", data => {
            ClubMessageNotify ret = JsonUtility.FromJson <ClubMessageNotify>(data.ToString());

            sclub_message_notify = ret;

            DispatchEvent("club_message_notify", ret);
        });

        pc.on("sys_message_updated", data => {
            DispatchEvent("sys_message_updated", data);
        });

        pc.on("recommend_room_updated", data => {
            Debug.Log("recommend_room_updated");
            DispatchEvent("recommend_room_updated", data);
        });
    }
コード例 #29
0
ファイル: Network.cs プロジェクト: yuchenwuhen/skillEditor
 /// <summary>
 /// 这里监听服务器主动发送的消息
 /// </summary>
 /// <param name="route"></param>
 /// <param name="action"></param>
 public void Register(string route, Action <JsonNode_Object> action)
 {
     client.on(route, action);
 }
コード例 #30
0
        //工作
        private void DoWork()
        {
            while (_isWorking)
            {
                //
                if (_workState == WorkState.ConnectGateState)
                {
                    JW.Common.Log.LogD("Pomelo 开始连接网关");
                    //释放
                    if (_pomeloClient != null)
                    {
                        _pomeloClient.NetWorkStateChangedEvent -= OnPemeloNetworkStateChange;
                        _pomeloClient.disconnect();
                        _pomeloClient.Dispose();
                        _pomeloClient = null;
                    }
                    _pomeloClient = new PomeloClient();
                    _pomeloClient.NetWorkStateChangedEvent += OnPemeloNetworkStateChange;
                    //
                    _pomeloClient.initClient(GateIp, GatePort, delegate()
                    {
                        //
                        _pomeloClient.on(OnPomeloReceiveNetMsg);
                        //套接字建立成功
                        _pomeloClient.connect(null, delegate(JsonObject data)
                        {
                            //握手回来
                            //开始查询游戏服务器地址
                            JW.Common.Log.LogD("Pomelo网关握手回来");
                            _workState = WorkState.ConnectGateQueryGSvrState;
                        });
                    });
                    //
                    _workState = WorkState.ConnectGateWaitingState;
                    Thread.Sleep(200);
                    continue;
                }

                if (_workState == WorkState.ConnectGateWaitingState)
                {
                    //
                    Thread.Sleep(200);
                }
                //请求查询游戏服务器地址
                if (_workState == WorkState.ConnectGateQueryGSvrState)
                {
                    JW.Common.Log.LogD("Pomelo 请求查询游戏服务器地址和端口");
                    string     route      = MSG_Query_Connector;
                    JsonObject jsonObject = new JsonObject();
                    SendJsonMsg(route, jsonObject);
                    //
                    _workState = WorkState.ConnectGateQueryGSvrWaitingState;
                    Thread.Sleep(200);
                    continue;
                }
                //
                if (_workState == WorkState.ConnectGateQueryGSvrWaitingState)
                {
                    //
                    Thread.Sleep(200);
                }

                //连接游戏服务器
                if (_workState == WorkState.ConnectGameSvrState)
                {
                    //释放网关用过的
                    if (_pomeloClient != null)
                    {
                        //去掉下
                        _pomeloClient.NetWorkStateChangedEvent -= OnPemeloNetworkStateChange;
                        _pomeloClient.disconnect();
                        _pomeloClient.Dispose();
                        _pomeloClient = null;
                    }
                    //
                    _pomeloClient = new PomeloClient();
                    _pomeloClient.NetWorkStateChangedEvent += OnPemeloNetworkStateChange;
                    //
                    JW.Common.Log.LogD("Pomelo 连接游戏服务器:{0}:{1}", _gameSvrIp, _gameSvrPort);
                    _pomeloClient.initClient(_gameSvrIp, _gameSvrPort, delegate()
                    {
                        //套接字建立成功
                        _pomeloClient.on(OnPomeloReceiveNetMsg);
                        //
                        _pomeloClient.connect(null, delegate(JsonObject data)
                        {
                            //握手回来
                            JW.Common.Log.LogD("------------>Pomelo Good Net<-----------------");
                            _workState = WorkState.ConnectGameSvrSuccessed;
                            if (CurSessionState == SessionState.SessionRetry)
                            {
                                JW.Common.Log.LogD("Pomelo Retry Connect Successed");
                            }
                            //成功
                            CurSessionState = SessionState.SessionSuccessed;
                        });
                        //
                    });
                    _workState = WorkState.ConnectGameSvrWaitingState;
                    Thread.Sleep(200);
                    continue;
                }

                if (_workState == WorkState.ConnectGameSvrWaitingState)
                {
                    //
                    Thread.Sleep(200);
                }

                if (_workState == WorkState.ConnectGameSvrRetryState)
                {
                    //
                    Thread.Sleep(200);
                }
                //
                if (_workState == WorkState.ConnectGameSvrSuccessed)
                {
                    Thread.Sleep(1000);
                }
            }
        }