24 enum class WebSocketPhase {
25 WebSocketPhaseHeaders,
28 WebSocketPhasePayload,
30 Q_ENUM(WebSocketPhase)
36 OpCodeReserved3 = 0x3,
37 OpCodeReserved4 = 0x4,
38 OpCodeReserved5 = 0x5,
39 OpCodeReserved6 = 0x6,
40 OpCodeReserved7 = 0x7,
44 OpCodeReservedB = 0xB,
45 OpCodeReservedC = 0xC,
46 OpCodeReservedD = 0xD,
47 OpCodeReservedE = 0xE,
52 enum class ChunkPhase {
64 void setupNewConnection(
Socket *sock)
override final;
68 qint64
doWrite(
const char *data, qint64 len)
override final;
73 bool webSocketSendTextMessage(
const QString &message)
override final;
75 bool webSocketSendBinaryMessage(
const QByteArray &message)
override final;
77 bool webSocketSendPing(
const QByteArray &payload)
override final;
79 bool webSocketClose(quint16 code,
const QString &reason)
override final;
81 inline void resetData()
override final
83 ProtocolData::resetData();
97 websocketUpgraded =
false;
100 chunkPhase = ChunkPhase::NotChunked;
109 virtual void socketDisconnected()
override final;
113 quint64 websocket_payload_size = 0;
114 quint32 websocket_need = 0;
115 quint32 websocket_mask = 0;
118 int websocket_start_of_frame = 0;
119 WebSocketPhase websocket_phase = WebSocketPhase::WebSocketPhaseHeaders;
120 ChunkPhase chunkPhase = ChunkPhase::NotChunked;
121 qint64 chunkBytesLeft = 0;
122 quint8 websocket_continue_opcode = 0;
123 quint8 websocket_finn_opcode = 0;
124 bool websocketUpgraded =
false;
127 bool webSocketHandshakeDo(
const QByteArray &key,