Example #1
0
        // 确认登录
        public string CheckLogin(Action <ResponseEvent> callback, string tag)
        {
            if (this.RoomInfo == null || string.IsNullOrEmpty(this.RoomInfo.Id))
            {
                Debugger.Log("无房间信息");
                var rspWrap1 = new ClientSendServerRspWrap1 {
                    ErrCode = ErrCode.EcSdkNoRoom,
                    ErrMsg  = "无房间信息"
                };
                var res = new DecodeRspResult(rspWrap1, null, null);
                CheckLoginResponse(false, res, callback);
                return("");
            }
            CheckLoginStatus.SetStatus(CheckLoginStatus.StatusType.Checking);

            var       response = new NetResponseCallback(CheckLoginResponse);
            const int subcmd   = (int)ProtoCmd.ECmdCheckLoginReq;

            var para = new CheckLoginReq {
                Token   = RequestHeader.AuthKey,
                RouteId = this.RoomInfo.RouteId
            };

            var seq = this.NetUtil2.Send(para, subcmd, response, callback);

            CheckLoginStatus.SetRouteId(para.RouteId);
            Debugger.Log("CheckLogin_Para {0} {1}", para, seq);
            return(seq);
        }
Example #2
0
        // 发送帧同步信息
        public string SendFrame(SendFrameReq para, Action <ResponseEvent> callback)
        {
            if (this.RoomInfo == null || string.IsNullOrEmpty(this.RoomInfo.Id))
            {
                var rspWrap1 = new ClientSendServerRspWrap1 {
                    ErrCode = ErrCode.EcSdkNoRoom,
                    ErrMsg  = "无房间信息"
                };
                var res = new DecodeRspResult(rspWrap1, null, null);
                this.SendFrameResponse(false, res, callback);
                return("");
            }
            this.AutoCheckLogin();

            var       response = new NetResponseCallback(this.SendFrameResponse);
            const int subcmd   = (int)ProtoCmd.ECmdRelaySendFrameReq;

            try {
                var seq = this.NetUtil2.Send(para, subcmd, response, callback);
                Debugger.Log("SendFrame_Para {0} {1}", para, seq);
                return(seq);
            } catch (System.Exception e) {
                Debugger.Log("Error: {0}", e.ToString());
                throw;
            }
        }
Example #3
0
        // 查询房间列表
        public string GetRoomList(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdGetRoomListV2Req;
            var       response = new NetResponseCallback(GetRoomListResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            return(seq);
        }
Example #4
0
        ///////////////////////////////// 请求 //////////////////////////////////
        // 发送消息
        public string SendMessage(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdRoomChatReq;
            var       response = new NetResponseCallback(SendMessageResponse);
            var       seq      = Send(para, subcmd, SendMessageResponse, callback);

            return(seq);
        }
Example #5
0
        ///////////////////////////////// 请求 //////////////////////////////////
        // 发送消息
        public string SendMessage(SendToClientReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdRoomChatReq;
            var       response = new NetResponseCallback(SendMessageResponse);
            var       seq      = Send(para, subcmd, SendMessageResponse, callback);

            Debugger.Log("SendMessage_Para {0} {1}", para, seq);
            return(seq);
        }
Example #6
0
        // 移除房间内玩家
        public string RemoveUser(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdRemoveMemberReq;
            var       response = new NetResponseCallback(RemoveUserResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("REMOVEUSER_Para", para, seq);
            return(seq);
        }
Example #7
0
        // 房间变更
        public string ChangeRoom(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdChangeRoomPropertisReq;
            var       response = new NetResponseCallback(ChangeRoomResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("CHANGEROOM_Para", para, seq);
            return(seq);
        }
Example #8
0
        // 解散房间
        public string DismissRoom(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdDissmissRoomReq;
            var       response = new NetResponseCallback(DismissRoomResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("DISMISSROOM_Para", para, seq);
            return(seq);
        }
Example #9
0
        // 离开房间
        public string LeaveRoom(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdQuitRoomReq;
            var       response = new NetResponseCallback(LeaveRoomResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("LEAVEROOM_Para", para, seq);
            return(seq);
        }
Example #10
0
        // 查询房间详情
        public string GetRoomByRoomId(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdGetRoomDetailReq;
            var       response = new NetResponseCallback(GetRoomByRoomIdRsp);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("GET_ROOM_BY_ROOMID", para, seq);
            return(seq);
        }
Example #11
0
        // 取消匹配
        public string CancelMatch(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdMatchCancelMatchReq;
            var       response = new NetResponseCallback(CancelMatchResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("CANCELMATCH_Para", para, seq);
            return(seq);
        }
Example #12
0
        // 房间匹配
        public string MatchRoom(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdMatchRoomSimpleReq;
            var       response = new NetResponseCallback(MatchRoomResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("MATCHROOM_Para", para, seq);
            return(seq);
        }
Example #13
0
        ///////////////////////////////// 请求 //////////////////////////////////

        // 多人复杂匹配
        public string MatchUsersComplex(ByteString para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdMatchPlayerComplexReq;
            var       response = new NetResponseCallback(MatchUsersComplexResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("MATCHUSERSCOMPLEX_Para", para, seq);
            return(seq);
        }
Example #14
0
        // 取消匹配
        public string CancelMatch(CancelPlayerMatchReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdMatchCancelMatchReq;
            var       response = new NetResponseCallback(CancelMatchResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("CancelMatch_Para {0} {1}", para, seq);
            return(seq);
        }
Example #15
0
        public string ChangeUserState(ChangeCustomPlayerStatusReq para, Action <ResponseEvent> callback)
        {
            const int subcmd  = (int)ProtoCmd.ECmdChangePlayerStateReq;
            var       reponse = new NetResponseCallback(ChangeUserStateResponse);
            var       seq     = this.Send(para, subcmd, reponse, callback);

            Debugger.Log("ChangeUserState_Para {0} {1}", para, seq);
            return(seq);
        }
Example #16
0
        // 加入房间
        public string JoinRoom(JoinRoomReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdJoinRoomReq;
            var       response = new NetResponseCallback(JoinRoomResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("JoinRoom_Para {0} {1}", para, seq);
            return(seq);
        }
Example #17
0
        public string GetGroupByGroupId(GetGroupByGroupIdReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdGetGroupDetailReq;
            var       response = new NetResponseCallback(GetGroupByGroupIdResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("GetGroupByGroupId_Para {0} {1}", para, seq);
            return(seq);
        }
Example #18
0
        public string ChangeGroup(ChangeGroupReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdChangeGroupPropertiesReq;
            var       response = new NetResponseCallback(ChangeGroupResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("ChangeGroup_Para {0} {1}", para, seq);
            return(seq);
        }
Example #19
0
        public string RemoveGroupPlayer(RemoveGroupPlayerReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdRemoveGroupMemberReq;
            var       response = new NetResponseCallback(RemoveGroupPlayerResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("RemoveGroupPlayer_Para {0} {1}", para, seq);
            return(seq);
        }
Example #20
0
        public string SendToGroupClient(SendToGroupClientReq para, Action <ResponseEvent> callback)
        {
            const int subcmd   = (int)ProtoCmd.ECmdGroupChatReq;
            var       response = new NetResponseCallback(SendToGroupClientResponse);
            var       seq      = this.Send(para, subcmd, response, callback);

            Debugger.Log("SendToGroupClient_Para {0} {1}", para, seq);
            return(seq);
        }
Example #21
0
        public string Logout(LogoutReq para, Action <ResponseEvent> callback)
        {
            const int subcmd  = (int)ProtoCmd.ECmdLogoutReq;
            var       reponse = new NetResponseCallback(LogoutResponse);
            var       seq     = this.Send(para.ToByteString(), subcmd, reponse, callback);

            Debugger.Log("LOGOUT_Para {0}, {1}", para, seq);

            return(seq);
        }
Example #22
0
        ////////////////////////////////////// 请求 ////////////////////////////////////
        public string Login(LoginPara para, string secretKey, Signature signature, Action <ResponseEvent> callback)
        {
            const int subcmd = (int)ProtoCmd.ECmdLoginReq;
            ulong     timestamp;
            ulong     nonce;
            string    sign;

            if (signature != null)
            {
                timestamp = signature.Timestamp;
                nonce     = signature.Nonce;
                sign      = signature.Sign;
            }
            else
            {
                timestamp = SdkUtil.GetCurrentTimeSeconds();
                var gRand  = new Random();
                var buffer = new byte[sizeof(UInt32)];
                gRand.NextBytes(buffer);
                nonce = BitConverter.ToUInt32(buffer, 0);
                sign  = CreateSignature(secretKey, para.GameId, para.OpenId, timestamp, nonce);
            }

            var loginReq = new LoginReq {
                GameId    = para.GameId,
                OpenId    = para.OpenId,
                Sign      = sign,
                Timestamp = timestamp,
                Nonce     = nonce,
                Platform  = 0,
                Channel   = 0,
                DeviceId  = para.OpenId + "_" + SdkUtil.deviceId,
                Mac       = "",
                Imei      = ""
            };

            UserStatus.SetStatus(UserStatus.StatusType.Logining);
            var response = new NetResponseCallback(LoginResponse);
            var seq      = Send(loginReq, subcmd, response, callback);

            Debugger.Log("Login_Para {0} {1}", loginReq, seq);

            return(seq);
        }
Example #23
0
        ////////////////////////////////////// 请求 ////////////////////////////////////
        public string Login(LoginPara para, string secretKey, Signature signature, Action <ResponseEvent> callback)
        {
            const int subcmd = (int)ProtoCmd.ECmdLoginReq;
            ulong     timestamp;
            ulong     nonce;
            string    sign;

            if (signature != null)
            {
                timestamp = signature.Timestamp;
                nonce     = signature.Nonce;
                sign      = signature.Sign;
            }
            else
            {
                timestamp = SdkUtil.GetCurrentTimeSeconds();
                var gRand  = new Random();
                var buffer = new byte[sizeof(UInt32)];
                gRand.NextBytes(buffer);
                nonce = BitConverter.ToUInt32(buffer, 0);
                // nonce = (ulong)(new Random().Next() * (int)(Math.Pow(2, 32) - 1));
                sign = CreateSignature(secretKey, para.GameId, para.OpenId, timestamp, nonce);
            }

            var loginReq = new LoginReq {
                GameId    = para.GameId,
                OpenId    = para.OpenId,
                Sign      = sign,
                Timestamp = timestamp,
                Nonce     = nonce,
                Platform  = 0,
                Channel   = 0,
                DeviceId  = "OaAV1Lg9DexJNKbN01dk5Em8RvMqQ0ZY",
                Mac       = "",
                Imei      = ""
            };
            var data = loginReq.ToByteString();

            UserStatus.SetStatus(UserStatus.StatusType.Logining);
            var response = new NetResponseCallback(LoginResponse);
            var seq      = Send(data, subcmd, response, callback);

            return(seq);
        }
Example #24
0
        ///////////////////////////////// 请求 //////////////////////////////////
        // 帧同步开始
        public string StartFrameSync(StartFrameSyncReq para, Action <ResponseEvent> callback)
        {
            if (this.RoomInfo == null || string.IsNullOrEmpty(this.RoomInfo.Id))
            {
                var rspWrap1 = new ClientSendServerRspWrap1 {
                    ErrCode = ErrCode.EcSdkNoRoom,
                    ErrMsg  = "无房间信息"
                };
                var res = new DecodeRspResult(rspWrap1, null, null);
                StartFrameSyncResponse(false, res, callback);
                return("");
            }
            this.AutoCheckLogin();

            var       response = new NetResponseCallback(StartFrameSyncResponse);
            const int subcmd   = (int)ProtoCmd.ECmdStartFrameSyncReq;
            var       seq      = this.NetUtil1.Send(para.ToByteString(), subcmd, response, callback);

            return(seq);
        }
Example #25
0
        // 发送自定义服务消息
        public string SendMessageExt(SendToGameSvrReq para, Action <ResponseEvent> callback)
        {
            if (this.RoomInfo == null || string.IsNullOrEmpty(this.RoomInfo.Id))
            {
                var rspWrap1 = new ClientSendServerRspWrap1 {
                    ErrCode = ErrCode.EcSdkNoRoom,
                    ErrMsg  = "无房间信息"
                };
                var res = new DecodeRspResult(rspWrap1, null, null);
                SendMessageExtResponse(false, res, callback);
                return("");
            }
            this.AutoCheckLogin();

            var       response = new NetResponseCallback(SendMessageExtResponse);
            const int subcmd   = (int)ProtoCmd.ECmdRelayClientSendtoGamesvrReq;
            var       seq      = this.NetUtil2.Send(para, subcmd, response, callback);

            Debugger.Log("SendMessageExt_Para {0} {1}", para, seq);
            return(seq);
        }
Example #26
0
        // 请求补帧
        public string RequestFrame(RequestFrameReq para, Action <ResponseEvent> callback)
        {
            if (this.RoomInfo == null || string.IsNullOrEmpty(this.RoomInfo.Id))
            {
                var rspWrap1 = new ClientSendServerRspWrap1 {
                    ErrCode = ErrCode.EcSdkNoRoom,
                    ErrMsg  = "无房间信息"
                };
                var res = new DecodeRspResult(rspWrap1, null, null);
                RequestFrameResponse(false, res, callback);
                return("");
            }
            this.AutoCheckLogin();

            var       response = new NetResponseCallback(RequestFrameResponse);
            const int subcmd   = (int)ProtoCmd.ECmdRelayRequestFrameReq;
            var       seq      = this.NetUtil2.Send(para.ToByteString(), subcmd, response, callback);

            // Debugger.Log ("REQUESTFRAME_Para {0} {1}", para, seq);
            return(seq);
        }
Example #27
0
        public string Send(ByteString body, int subcmd, NetResponseCallback response, Action <ResponseEvent> callback)
        {
            // 第一层 cmd:通用连接 | 帧同步连接
            var requestCmd = "comm_cmd";

            if (client.Socket.Id == (int)ConnectionType.Relay)
            {
                requestCmd = "relay_cmd";
            }

            var queRequest = new QueueRequest
            {
                Body       = body,
                Subcmd     = (int)subcmd,
                Completed  = callback,
                RequestCmd = requestCmd,
                Running    = false,
                Response   = response
            };

            // CheckLogin 队列化
            if (subcmd == (int)ClientSendServerReqWrap2Cmd.ECmdCheckLoginReq)
            {
                queRequest.BeforeRequest = () =>
                {
                    CheckLoginStatus.SetStatus(CheckLoginStatus.StatusType.Checking);
                };
                queRequest.AfterRequest = (seq) =>
                {
                    // Debugger.Log("CHECKLOGIN", seq);
                };
            }
            ;

            // 房间操作队列化
            var queue = BaseNetUtil._roomCmd.Contains((ClientSendServerReqWrap2Cmd)subcmd) ? BaseNetUtil._roomQueue : BaseNetUtil._checkLoginQueue;

            return(queue.Count == 0 ? SendRequest(queRequest) : PushRequest(queRequest, queue));
        }
Example #28
0
        // 发送消息请求
        public string SendRequest(ByteString body, int subcmd, NetResponseCallback response, Action <ResponseEvent> callback, string cmd, string seq)
        {
            if (seq.Length == 0)
            {
                seq = Guid.NewGuid().ToString();
                var sendQueueVal = new SendQueueValue {
                    Time         = DateTime.Now,
                    IsSocketSend = false,
                    Cmd          = (int)subcmd,
                    resend       = () => this.SendRequest(body, subcmd, response, callback, cmd, seq),
                    response     = msg => {
                        response(true, msg, callback);
                        DeleteSendQueue(seq);
                    }
                };
                sendQueueVal.sendSuccess = () => {
                    // if(Socket.Id == 1) Debugger.Log("handle send success {0}", seq);
                    sendQueueVal.IsSocketSend = true;
                };
                sendQueueVal.remove = () => {
                    DeleteSendQueue(seq);
                };
                sendQueueVal.sendFail = (errCode, errMsg) => {
                    var errMessage = "消息发送失败," + errMsg + "[" + errCode + "]";
                    var rspWrap1   = new ClientSendServerRspWrap1 {
                        Seq     = seq,
                        ErrCode = errCode,
                        ErrMsg  = errMessage
                    };
                    response(false, new DecodeRspResult {
                        RspWrap1 = rspWrap1,
                    }, callback);
                    DeleteSendQueue(seq);
                };
                AddSendQueue(seq, sendQueueVal);
            }

            // PB request = new PB();

            var qAppRequest = new ClientSendServerReqWrap1 {
                Version   = RequestHeader.Version,
                AppName   = RequestHeader.AppName,
                ClientIp  = RequestHeader.ClientIp,
                ServiceIp = RequestHeader.ServiceIp,
                Business  = RequestHeader.Business,
                AuthKey   = RequestHeader.AuthKey,
                AuthType  = RequestHeader.AuthType,
                AuthIp    = RequestHeader.AuthIp,
                GameId    = RequestHeader.GameId,
                Uid       = RequestHeader.Uid,
                PlayerId  = RequestHeader.PlayerId,
                Cmd       = cmd,
                Seq       = seq
            };
            var accessReq = new ClientSendServerReqWrap2();

            accessReq.Cmd = (ProtoCmd)subcmd;
            var data = Pb.EncodeReq(qAppRequest, accessReq, body);

            if (data.Length > _maxDataLength)
            {
                SendQueueValue val = null;
                SendQueue.TryGetValue(seq + "", out val);
                var timer = new Timer();
                timer.SetTimeout(() => {
                    if (val != null)
                    {
                        val.sendFail((int)QAppProtoErrCode.EcSdkSendFail, "数据长度超限");
                    }
                }, 0);
                return(seq);
            }

            var reqData = BuildData(data);

            return(this.Send(reqData, seq, (ProtoCmd)subcmd));
        }