KEEL 1.0.0
Minimal C11 HTTP client/server library built on epoll/kqueue/io_uring/poll
Loading...
Searching...
No Matches
websocket_client.h
Go to the documentation of this file.
1
10#ifndef KEEL_WEBSOCKET_CLIENT_H
11#define KEEL_WEBSOCKET_CLIENT_H
12
13#include <keel/allocator.h>
14#include <keel/event_ctx.h>
15#include <keel/tls.h>
16#include <keel/websocket.h>
17
18/* ── Defaults ────────────────────────────────────────────────────── */
19
21#define KL_WS_CLIENT_DEFAULT_TIMEOUT_MS 30000
23#define KL_WS_CLIENT_RECV_BUF_SIZE 8192
25#define KL_WS_CLIENT_DEFAULT_MAX_FRAME (16 * 1024 * 1024)
27#define KL_WS_CLIENT_KEY_B64_SIZE 25
29#define KL_WS_CLIENT_UPGRADE_BUF_INIT 512
30
31/* ── Types ───────────────────────────────────────────────────────── */
32
34
42
43typedef struct {
44 void (*on_open)(KlWsClientConn *ws, void *user_data);
45 void (*on_message)(KlWsClientConn *ws, const char *data, size_t len,
46 int is_binary, void *user_data);
47 void (*on_close)(KlWsClientConn *ws, uint16_t code,
48 const char *reason, size_t reason_len, void *user_data);
49 void (*on_error)(KlWsClientConn *ws, const char *msg, void *user_data);
51
52/* ── Public API ──────────────────────────────────────────────────── */
53
69 const KlWsClientConfig *cfg,
70 const char *url,
71 const KlWsClientCallbacks *cbs,
72 void *user_data);
73
75int kl_ws_client_send_text(KlWsClientConn *ws, const char *data, size_t len);
76
78int kl_ws_client_send_binary(KlWsClientConn *ws, const char *data, size_t len);
79
81int kl_ws_client_send_ping(KlWsClientConn *ws, const char *data, size_t len);
82
84void kl_ws_client_close(KlWsClientConn *ws, uint16_t code,
85 const char *reason, size_t reason_len);
86
89
90#endif
Bring-your-own allocator vtable.
Definition allocator.h:12
Composable event loop context.
Definition event_ctx.h:42
TLS configuration for KlConfig.
Definition tls.h:108
Definition websocket_client.h:43
Definition websocket_client.h:35
int timeout_ms
Definition websocket_client.h:36
size_t max_frame_size
Definition websocket_client.h:37
const char * protocol
Definition websocket_client.h:39
KlTlsConfig * tls
Definition websocket_client.h:38
int ping_interval_ms
Definition websocket_client.h:40
Shared WebSocket protocol constants and frame parser.
int kl_ws_client_send_ping(KlWsClientConn *ws, const char *data, size_t len)
Send a ping frame.
struct KlWsClientConn KlWsClientConn
Definition websocket_client.h:33
int kl_ws_client_send_binary(KlWsClientConn *ws, const char *data, size_t len)
Send a binary frame.
void kl_ws_client_free(KlWsClientConn *ws)
Free all WebSocket client resources.
void kl_ws_client_close(KlWsClientConn *ws, uint16_t code, const char *reason, size_t reason_len)
Initiate close handshake.
int kl_ws_client_send_text(KlWsClientConn *ws, const char *data, size_t len)
Send a text frame.
KlWsClientConn * kl_ws_client_connect(KlEventCtx *ev, KlAllocator *alloc, const KlWsClientConfig *cfg, const char *url, const KlWsClientCallbacks *cbs, void *user_data)
Connect to a WebSocket server.