@@ -24,14 +24,13 @@ template <class T> weak_ptr<T> make_weak_ptr(shared_ptr<T> ptr) { return ptr; }
24
24
void test_websocketserver () {
25
25
InitLogger (LogLevel::Debug);
26
26
27
- const string myMessage = " Hello world from client" ;
28
-
29
27
WebSocketServer::Configuration serverConfig;
30
28
serverConfig.port = 48080 ;
31
29
serverConfig.enableTls = true ;
32
30
// serverConfig.certificatePemFile = ...
33
31
// serverConfig.keyPemFile = ...
34
32
serverConfig.bindAddress = " 127.0.0.1" ; // to test IPv4 fallback
33
+ serverConfig.maxMessageSize = 1000 ; // to test max message size
35
34
WebSocketServer server (std::move (serverConfig));
36
35
37
36
shared_ptr<WebSocket> client;
@@ -63,22 +62,33 @@ void test_websocketserver() {
63
62
config.disableTlsVerification = true ;
64
63
WebSocket ws (std::move (config));
65
64
65
+ const string myMessage = " Hello world from client" ;
66
+
66
67
ws.onOpen ([&ws, &myMessage]() {
67
68
cout << " WebSocket: Open" << endl;
69
+ ws.send (binary (1001 , byte (0 ))); // test max message size
68
70
ws.send (myMessage);
69
71
});
70
72
71
73
ws.onClosed ([]() { cout << " WebSocket: Closed" << endl; });
72
74
73
75
std::atomic<bool > received = false ;
74
- ws.onMessage ([&received, &myMessage](variant<binary, string> message) {
76
+ std::atomic<bool > maxSizeReceived = false ;
77
+ ws.onMessage ([&received, &maxSizeReceived, &myMessage](variant<binary, string> message) {
75
78
if (holds_alternative<string>(message)) {
76
79
string str = std::move (get<string>(message));
77
80
if ((received = (str == myMessage)))
78
81
cout << " WebSocket: Received expected message" << endl;
79
82
else
80
83
cout << " WebSocket: Received UNEXPECTED message" << endl;
81
84
}
85
+ else {
86
+ binary bin = std::move (get<binary>(message));
87
+ if ((maxSizeReceived = (bin.size () == 1000 )))
88
+ cout << " WebSocket: Received large message truncated at max size" << endl;
89
+ else
90
+ cout << " WebSocket: Received large message NOT TRUNCATED" << endl;
91
+ }
82
92
});
83
93
84
94
ws.open (" wss://localhost:48080/" );
@@ -90,8 +100,8 @@ void test_websocketserver() {
90
100
if (!ws.isOpen ())
91
101
throw runtime_error (" WebSocket is not open" );
92
102
93
- if (!received)
94
- throw runtime_error (" Expected message not received" );
103
+ if (!received || !maxSizeReceived )
104
+ throw runtime_error (" Expected messages not received" );
95
105
96
106
ws.close ();
97
107
this_thread::sleep_for (1s);
0 commit comments