/** * @doc Room.requestFrame * @name 请求补帧 * @description 调用结果将在 callback 中异步返回。 * @param {SDKType.RequestFramePara} requestFramePara 请求补帧参数 * @param {SDKType.ReqCallback<SDKType.RequestFrameRsp>} callback 响应回调函数 * @returns {void} */ public void RequestFrame(RequestFramePara para, Action <ResponseEvent> callback) { this.RoomUtil.ActiveFrame(); void Eve(ResponseEvent eve) { // Debugger.Log("request frame rsp"); if (eve.Data != null) { var rsp = (RequestFrameRsp)eve.Data; var frames = new List <Frame> (); foreach (var item in rsp.Frames) { var frame = new Frame { Id = item.Id, Ext = item.Ext, Time = Convert.ToInt64(SdkUtil.GetCurrentTimeSeconds()), RoomId = RoomInfo.Id, IsReplay = true }; frame.Items.AddRange(item.Items); frames.Add(frame); } rsp.Frames.Clear(); rsp.Frames.AddRange(frames); eve.Data = rsp; } callback?.Invoke(eve); } Sdk.Instance.RequestFrame(para, Eve); }
////////////////////////////////////// 请求 //////////////////////////////////// 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 Signature() { Timestamp = SdkUtil.GetCurrentTimeSeconds(); }