Example #1
0
        /// <summary>
        /// 业务只需要具体实现此函数的分发即可, 此处只是简单示例
        /// </summary>
        /// <param name="ev"></param>
        /// <param name="cmd"></param>
        /// <param name="ud"></param>
        /// <param name="channel"></param>
        public void HandleEvent(NetworkEvent ev, int cmd, NativeDataView ud, int channel)
        {
            UnityEngine.Debug.LogFormat("SampleNetworkPacketHandler.HandleEvent, event={0}, cmd={1}, channel={2}", ev, cmd, channel);
            if (cmd == AppProtocol.CMD_LOGIN_REQ)
            { // SampelScene应该是 channel:1 收到
                var msg = new AppProtocol.LoginReq();
                msg.decode(ud);
                msg.print();

                // 回应客户端
                var reply = new AppProtocol.LoginResp();
                reply.uid    = msg.uid;
                reply.status = 200; // 200 表示success
                (NativeDataView udReply, Stream hold) = reply.encode();
                NetworkServiceManager.Instance.SendSerializedMsg(AppProtocol.CMD_LOGIN_RESP, udReply, AppProtocol.SERVER_CHANNEL);
                hold.Dispose();
            }
            else if (cmd == AppProtocol.CMD_LOGIN_RESP)
            { // SampelScene应该是 channel:0 收到
                // 打印登录响应消息
                var msg = new AppProtocol.LoginResp();
                msg.decode(ud);
                msg.print();
            }
        }
Example #2
0
    unsafe public void OnConnectSuccess(int channel = 0)
    {
        if (channel == AppProtocol.CLIENT_CHANNEL)
        {
            Debug.LogFormat("Connect success, channel={0}", channel);

            // 模拟登录协议
            var loginReq = new AppProtocol.LoginReq();
            loginReq.uid     = 1219;
            (var ud, var ms) = loginReq.encode();

            nsm.SendSerializedMsg(AppProtocol.CMD_LOGIN_REQ, ud, AppProtocol.CLIENT_CHANNEL);

            ms.Dispose();
        }
        else if (channel == AppProtocol.SERVER_CHANNEL)
        {
            Debug.LogFormat("A client income, channel={0}", channel);
        }
    }