예제 #1
0
        public byte[] KeepAliveRequest()
        {
            var keepalive = new KeepAliveRequest
            {
                PresenceStatus  = AcFunDanmu.RegisterRequest.Types.PresenceStatus.KPresenceOnline,
                AppActiveStatus = AcFunDanmu.RegisterRequest.Types.ActiveStatus.KAppInForeground,
            };

            var payload = GeneratePayload(Command.KEEP_ALIVE, keepalive);

            var body = payload.ToByteArray();

            var header = GenerateHeader(body);

            Interlocked.Increment(ref SeqId);

            Log.Debug("--------");
            Log.Debug("Up\t\t {HeaderSeqId}, {SeqId}, {Command}", header.SeqId, payload.SeqId, payload.Command);
            Log.Debug("Header: {Header}", header);
            Log.Debug("Payload Base64: {Payload}", Convert.ToBase64String(body));
            Log.Debug("Payload: {Payload}", payload);
            Log.Debug("\t{KeepAlive}", keepalive);
            Log.Debug("--------");

            return(Encode(header, body, SessionKey));
        }
예제 #2
0
        byte[] KeepAlive()
        {
            var keepalive = new KeepAliveRequest
            {
                PresenceStatus  = RegisterRequest.Types.PresenceStatus.KPresenceOnline,
                AppActiveStatus = RegisterRequest.Types.ActiveStatus.KAppInForeground,
            };

            var payload = new UpstreamPayload
            {
                Command     = Command.KEEP_ALIVE,
                SeqId       = SeqId,
                RetryCount  = RetryCount,
                PayloadData = keepalive.ToByteString(),
                SubBiz      = SubBiz
            };

            var body = payload.ToByteString();

            var header = new PacketHeader
            {
                AppId             = AppId,
                Uid               = UserId,
                InstanceId        = InstanceId,
                DecodedPayloadLen = body.Length,
                EncryptionMode    = PacketHeader.Types.EncryptionMode.KEncryptionSessionKey,
                SeqId             = SeqId,
                Kpn               = KPN,
            };

            return(Encode(header, body));
        }
예제 #3
0
        internal byte[] KeepAliveRequest(bool ShouldIncrease = false)
        {
            var keepalive = new KeepAliveRequest
            {
                PresenceStatus  = AcFunDanmu.RegisterRequest.Types.PresenceStatus.KPresenceOnline,
                AppActiveStatus = AcFunDanmu.RegisterRequest.Types.ActiveStatus.KAppInForeground,
            };

            var payload = GeneratePayload(Command.KEEP_ALIVE, keepalive);

            var body = payload.ToByteString();

            var header = GenerateHeader(body);

            if (ShouldIncrease)
            {
                SeqId++;
            }

            return(Encode(header, body, SessionKey));
        }