Kurlyk
Toggle main menu visibility
Loading...
Searching...
No Matches
websocket_echo_example.cpp
Go to the documentation of this file.
1
#include <
kurlyk.hpp
>
2
3
int
main
() {
4
kurlyk::WebSocketClient
client(
"wss://echo-websocket.fly.dev/"
);
5
6
client.
on_event
([](std::unique_ptr<kurlyk::WebSocketEventData> event) {
7
switch
(event->event_type) {
8
case
kurlyk::WebSocketEventType::WS_OPEN
:
9
KURLYK_PRINT
<<
"Connection opened"
<< std::endl;
10
11
// Log HTTP version
12
KURLYK_PRINT
<<
"HTTP Version: "
<<
event
->sender->get_http_version() << std::endl;
13
14
// Log headers
15
KURLYK_PRINT
<<
"Headers:"
<< std::endl;
16
for
(
const
auto
& header : event->sender->get_headers()) {
17
KURLYK_PRINT
<< header.first <<
": "
<< header.second << std::endl;
18
}
19
20
// Send a message
21
event
->sender->send_message(
"Hello, WebSocket!"
, 0, [](
const
std::error_code& ec) {
22
if
(ec) {
23
KURLYK_PRINT
<<
"Failed to send message: "
<< ec.message() << std::endl;
24
}
else
{
25
KURLYK_PRINT
<<
"Message sent successfully"
<< std::endl;
26
}
27
});
28
break
;
29
30
case
kurlyk::WebSocketEventType::WS_MESSAGE
:
31
KURLYK_PRINT
<<
"Message received: "
<<
event
->message << std::endl;
32
33
// Send a response
34
event
->sender->send_message(
"Hello again!"
, 0, [](
const
std::error_code& ec) {
35
if
(ec) {
36
KURLYK_PRINT
<<
"Failed to send message: "
<< ec.message() << std::endl;
37
}
else
{
38
KURLYK_PRINT
<<
"Message sent successfully"
<< std::endl;
39
}
40
});
41
break
;
42
43
case
kurlyk::WebSocketEventType::WS_CLOSE
:
44
KURLYK_PRINT
<<
"Connection closed: "
<<
event
->message
45
<<
"; Status code: "
<<
event
->status_code << std::endl;
46
break
;
47
48
case
kurlyk::WebSocketEventType::WS_ERROR
:
49
KURLYK_PRINT
<<
"Error: "
<<
event
->error_code.message() << std::endl;
50
break
;
51
};
52
});
53
54
KURLYK_PRINT
<<
"Connecting..."
<< std::endl;
55
client.
connect
();
56
57
// Wait to receive responses
58
std::this_thread::sleep_for(std::chrono::seconds(10));
59
60
KURLYK_PRINT
<<
"Disconnecting..."
<< std::endl;
61
client.
disconnect_and_wait
();
62
63
KURLYK_PRINT
<<
"Program finished."
<< std::endl;
64
return
0;
65
}
kurlyk::WebSocketClient
Public facade for managing WebSocket connections, events, and message sending.
Definition
WebSocketClient.hpp:16
kurlyk::WebSocketClient::on_event
void on_event(std::function< void(std::unique_ptr< WebSocketEventData >)> callback)
Sets a callback for WebSocket events.
Definition
WebSocketClient.hpp:94
kurlyk::WebSocketClient::disconnect_and_wait
bool disconnect_and_wait()
Disconnects from the WebSocket server, blocking until the disconnection completes.
Definition
WebSocketClient.hpp:181
kurlyk::WebSocketClient::connect
std::future< bool > connect()
Asynchronously connects to the WebSocket server.
Definition
WebSocketClient.hpp:127
kurlyk.hpp
Main header file for the Kurlyk library, providing HTTP and WebSocket support.
kurlyk::WebSocketEventType::WS_ERROR
@ WS_ERROR
Error occurred.
Definition
enums.hpp:35
kurlyk::WebSocketEventType::WS_MESSAGE
@ WS_MESSAGE
Message received.
Definition
enums.hpp:33
kurlyk::WebSocketEventType::WS_CLOSE
@ WS_CLOSE
Connection closed.
Definition
enums.hpp:34
kurlyk::WebSocketEventType::WS_OPEN
@ WS_OPEN
Connection established.
Definition
enums.hpp:32
KURLYK_PRINT
#define KURLYK_PRINT
Definition
print_utils.hpp:8
main
int main()
Definition
websocket_echo_example.cpp:3
examples
websocket_echo_example.cpp
Generated by
1.17.0