Kurlyk
Loading...
Searching...
No Matches
websocket_echo_example.cpp
Go to the documentation of this file.
1#include <kurlyk.hpp>
2
3int 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) {
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
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
44 KURLYK_PRINT << "Connection closed: " << event->message
45 << "; Status code: " << event->status_code << std::endl;
46 break;
47
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}
Provides an interface for managing WebSocket connections, including configuration,...
void on_event(std::function< void(std::unique_ptr< WebSocketEventData >)> callback)
Sets a callback for WebSocket events.
bool disconnect_and_wait()
Disconnects from the WebSocket server, blocking until the disconnection completes.
std::future< bool > connect()
Asynchronously connects to the WebSocket server.
Main header file for the Kurlyk library, providing HTTP and WebSocket support.
@ WS_ERROR
Error occurred.
Definition enums.hpp:35
@ WS_MESSAGE
Message received.
Definition enums.hpp:33
@ WS_CLOSE
Connection closed.
Definition enums.hpp:34
@ WS_OPEN
Connection established.
Definition enums.hpp:32
#define KURLYK_PRINT