public Token PacketToToken(WebSocketRawPacket packet) { return _tokenProcessor.PacketToToken(packet); }
public static WebSocketPacket protocolToRawPacket(Stream aIS) { int lFlags = aIS.ReadByte(); if (lFlags == -1) { return(null); } byte[] lBuff = new byte[0]; bool lFragmented = false; if ((lFlags & 0x80) == 0x00) { lFragmented = true; } bool lMasked = true; int[] lMask = new int[4]; int lOpcode = lFlags & 0x0F; WebSocketFrameType lFrameType = (WebSocketFrameType)lOpcode; if (lFrameType.Equals(WebSocketFrameType.INVALID)) { throw new WebSocketException("Invalid frame type"); } else { long lPayloadLen = Read(aIS); lMasked = (lPayloadLen & 0x80) == 0x80; lPayloadLen &= 0x7F; if (lPayloadLen == 126) { lPayloadLen = Read(aIS) & 0xFF; lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); } else if (lPayloadLen == 127) { lPayloadLen = Read(aIS) & 0xFF; lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); } if (lMasked) { lMask[0] = Read(aIS) & 0xFF; lMask[1] = Read(aIS) & 0xFF; lMask[2] = Read(aIS) & 0xFF; lMask[3] = Read(aIS) & 0xFF; } if (lPayloadLen > 0) { if (lMasked) { int j = 0; while (lPayloadLen-- > 0) { WriteByte(ref lBuff, Convert.ToByte(Read(aIS) ^ lMask[j])); j++; j &= 3; } } else { while (lPayloadLen-- > 0) { WriteByte(ref lBuff, (byte)Read(aIS)); } } } } WebSocketPacket lRes = new WebSocketRawPacket(lFrameType, lBuff); return(lRes); }
public static WebSocketPacket protocolToRawPacket(Stream aIS) { int lFlags = aIS.ReadByte(); if (lFlags == -1) return null; byte[] lBuff = new byte[0]; bool lFragmented = false; if ((lFlags & 0x80) == 0x00) lFragmented = true; bool lMasked = true; int[] lMask = new int[4]; int lOpcode = lFlags & 0x0F; WebSocketFrameType lFrameType = (WebSocketFrameType)lOpcode; if (lFrameType.Equals(WebSocketFrameType.INVALID)) { throw new WebSocketException("Invalid frame type"); } else { long lPayloadLen = Read(aIS); lMasked = (lPayloadLen & 0x80) == 0x80; lPayloadLen &= 0x7F; if (lPayloadLen == 126) { lPayloadLen = Read(aIS) & 0xFF; lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); } else if (lPayloadLen == 127) { lPayloadLen = Read(aIS) & 0xFF; lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); lPayloadLen = (lPayloadLen << 8) ^ (Read(aIS) & 0xFF); } if (lMasked) { lMask[0] = Read(aIS) & 0xFF; lMask[1] = Read(aIS) & 0xFF; lMask[2] = Read(aIS) & 0xFF; lMask[3] = Read(aIS) & 0xFF; } if (lPayloadLen > 0) { if (lMasked) { int j = 0; while (lPayloadLen-- > 0) { WriteByte(ref lBuff, Convert.ToByte(Read(aIS) ^ lMask[j])); j++; j &= 3; } } else { while (lPayloadLen-- > 0) { WriteByte(ref lBuff, (byte)Read(aIS)); } } } } WebSocketPacket lRes = new WebSocketRawPacket(lFrameType, lBuff); return lRes; }
/// <summary> /// Disconnects the client from server. /// </summary> public void Close() { WebSocketPacket pingPacket = new WebSocketRawPacket(WebSocketFrameType.CLOSE, "Bye"); pingPacket.SetEndFrame(true); SendInternal(WebSocketProtocolAbstraction.RawToProtocolPacket(pingPacket)); }
private void SendPacketText(string aUTF8String, int aFragmentSize) { WebSocketPacket lPacket = new WebSocketRawPacket(WebSocketFrameType.TEXT, aUTF8String); lPacket.SetEndFrame(true); SendInternal(WebSocketProtocolAbstraction.RawToProtocolPacket(lPacket)); }
/// <summary> /// Pings the server. /// </summary> public void Ping() { WebSocketPacket pingPacket = new WebSocketRawPacket(WebSocketFrameType.PING, "Hello"); pingPacket.SetEndFrame(true); SendInternal(WebSocketProtocolAbstraction.RawToProtocolPacket(pingPacket)); }