// 确认登录 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); }
// 发送帧同步信息 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; } }
// 查询房间列表 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); }
///////////////////////////////// 请求 ////////////////////////////////// // 发送消息 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); }
///////////////////////////////// 请求 ////////////////////////////////// // 发送消息 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); }
// 移除房间内玩家 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); }
// 房间变更 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); }
// 解散房间 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); }
// 离开房间 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); }
// 查询房间详情 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); }
// 取消匹配 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); }
// 房间匹配 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); }
///////////////////////////////// 请求 ////////////////////////////////// // 多人复杂匹配 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); }
// 取消匹配 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); }
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); }
// 加入房间 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); }
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); }
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); }
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); }
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); }
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); }
////////////////////////////////////// 请求 //////////////////////////////////// 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); }
////////////////////////////////////// 请求 //////////////////////////////////// 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); }
///////////////////////////////// 请求 ////////////////////////////////// // 帧同步开始 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); }
// 发送自定义服务消息 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); }
// 请求补帧 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); }
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)); }
// 发送消息请求 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)); }