コード例 #1
0
        internal void Unmask()
        {
            if (Mask == Mask.Off)
            {
                return;
            }

            Mask = Mask.Off;
            PayloadData.Mask(MaskingKey);
            MaskingKey = WebSocket.EmptyBytes;
        }
コード例 #2
0
ファイル: WebSocketFrame.cs プロジェクト: wcy-fmt/embedio
        internal void Unmask()
        {
            if (Mask == Mask.Off)
            {
                return;
            }

            Mask = Mask.Off;
            PayloadData.Mask(MaskingKey);
            MaskingKey = Array.Empty <byte>();
        }
コード例 #3
0
        internal WebSocketFrame(
            Fin fin, Opcode opcode, PayloadData payloadData, bool compressed = false, bool mask = true)
        {
            Fin    = fin;
            Rsv1   = IsOpcodeData(opcode) && compressed ? Rsv.On : Rsv.Off;
            Rsv2   = Rsv.Off;
            Rsv3   = Rsv.Off;
            Opcode = opcode;

            var len = payloadData.Length;

            if (len < 126)
            {
                PayloadLength         = (byte)len;
                ExtendedPayloadLength = WebSocket.EmptyBytes;
            }
            else if (len < 0x010000)
            {
                PayloadLength         = (byte)126;
                ExtendedPayloadLength = ((ushort)len).InternalToByteArray(Endianness.Big);
            }
            else
            {
                PayloadLength         = (byte)127;
                ExtendedPayloadLength = len.InternalToByteArray(Endianness.Big);
            }

            if (mask)
            {
                Mask       = Mask.On;
                MaskingKey = CreateMaskingKey();
                payloadData.Mask(MaskingKey);
            }
            else
            {
                Mask       = Mask.Off;
                MaskingKey = WebSocket.EmptyBytes;
            }

            PayloadData = payloadData;
        }