@@ -112,6 +112,7 @@ class _DummyWebSocket : public easywsclient::WebSocket
112
112
public:
113
113
void poll (int timeout) { }
114
114
void send (const std::string& message) { }
115
+ void sendPing () { }
115
116
void close () { }
116
117
void _dispatch (Callback & callable) { }
117
118
readyStateValues getReadyState () const { return CLOSED; }
@@ -305,7 +306,15 @@ class _RealWebSocket : public easywsclient::WebSocket
305
306
}
306
307
}
307
308
309
+ void sendPing () {
310
+ sendData (wsheader_type::PING, std::string ());
311
+ }
312
+
308
313
void send (const std::string& message) {
314
+ sendData (wsheader_type::TEXT_FRAME, message);
315
+ }
316
+
317
+ void sendData (wsheader_type::opcode_type type, const std::string& message) {
309
318
// TODO:
310
319
// Masking key should (must) be derived from a high quality random
311
320
// number generator, to mitigate attacks on non-WebSocket friendly
@@ -316,7 +325,7 @@ class _RealWebSocket : public easywsclient::WebSocket
316
325
std::vector<uint8_t > header;
317
326
uint64_t message_size = message.size ();
318
327
header.assign (2 + (message_size >= 126 ? 2 : 0 ) + (message_size >= 65536 ? 6 : 0 ) + (useMask ? 4 : 0 ), 0 );
319
- header[0 ] = 0x80 | wsheader_type::TEXT_FRAME ;
328
+ header[0 ] = 0x80 | type ;
320
329
if (false ) { }
321
330
else if (message_size < 126 ) {
322
331
header[1 ] = (message_size & 0xff ) | (useMask ? 0x80 : 0 );
0 commit comments