6 for (
int i = 0; i < n; ++i) {
7 KURLYK_PRINT <<
"Iteration " << i + 1 <<
" of " << n << std::endl;
10 std::thread client1_thread([]() {
11 std::this_thread::sleep_for(std::chrono::seconds(2));
14 client1.
on_event([rate_limit_id](std::unique_ptr<kurlyk::WebSocketEventData> event) {
15 static int counter = 0;
16 switch (event->event_type) {
18 KURLYK_PRINT <<
"Client 1: Connection opened" << std::endl;
19 event->sender->send_message(
"Client 1 says hello!", rate_limit_id);
22 KURLYK_PRINT <<
"Client 1: Message received: " <<
event->message << std::endl;
23 event->sender->send_message(
"Client 1 message #" + std::to_string(counter++), rate_limit_id);
26 KURLYK_PRINT <<
"Client 1: Connection closed with status: " <<
event->status_code << std::endl;
29 KURLYK_PRINT <<
"Client 1: Error: " <<
event->error_code.message() << std::endl;
35 std::this_thread::sleep_for(std::chrono::seconds(5));
36 KURLYK_PRINT <<
"Client 1: Disconnecting..." << std::endl;
42 std::thread client2_thread([]() {
45 client2.
on_event([rate_limit_id](std::unique_ptr<kurlyk::WebSocketEventData> event) {
46 static int counter = 0;
47 switch (event->event_type) {
49 KURLYK_PRINT <<
"Client 2: Connection opened" << std::endl;
50 event->sender->send_message(
"Client 2 says hello!", rate_limit_id);
53 KURLYK_PRINT <<
"Client 2: Message received: " <<
event->message << std::endl;
54 event->sender->send_message(
"Client 2 message #" + std::to_string(counter++), rate_limit_id);
57 KURLYK_PRINT <<
"Client 2: Connection closed with status: " <<
event->status_code << std::endl;
60 KURLYK_PRINT <<
"Client 2: Error: " <<
event->error_code.message() << std::endl;
66 std::this_thread::sleep_for(std::chrono::seconds(10));
67 KURLYK_PRINT <<
"Client 2: Disconnecting..." << std::endl;
73 client1_thread.join();
74 client2_thread.join();
75 std::this_thread::sleep_for(std::chrono::seconds(1));