示例#1
0
        /**
         * @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);
        }
示例#2
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);
        }
示例#3
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);
        }
示例#4
0
 public Signature()
 {
     Timestamp = SdkUtil.GetCurrentTimeSeconds();
 }