ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
websocket.c
Go to the documentation of this file.
1
10#include <libwebsockets.h>
11#include <string.h>
12
16static void websocket_server_lws_log_callback(int level, const char *line) {
17 if (!line) {
18 return;
19 }
20
21 // Strip leading timestamp (format: "[timestamp] message")
22 const char *msg = line;
23 if (line[0] == '[') {
24 // Find the closing bracket
25 const char *bracket = strchr(line, ']');
26 if (bracket && bracket[1] == ' ') {
27 msg = bracket + 2; // Skip "] "
28 }
29 }
30
31 // Strip trailing newlines
32 size_t len = strlen(msg);
33 while (len > 0 && (msg[len - 1] == '\n' || msg[len - 1] == '\r')) {
34 len--;
35 }
36
37 if (level & LLL_ERR) {
38 log_error("[LWS:server] %.*s", (int)len, msg);
39 } else if (level & LLL_WARN) {
40 log_warn("[LWS:server] %.*s", (int)len, msg);
41 } else if (level & LLL_NOTICE) {
42 log_info("[LWS:server] %.*s", (int)len, msg);
43 } else if (level & LLL_INFO) {
44 log_info("[LWS:server] %.*s", (int)len, msg);
45 } else if (level & LLL_DEBUG) {
46 log_debug("[LWS:server] %.*s", (int)len, msg);
47 }
48}
49
53static void websocket_client_lws_log_callback(int level, const char *line) {
54 if (!line) {
55 return;
56 }
57
58 // Strip leading timestamp (format: "[timestamp] message")
59 const char *msg = line;
60 if (line[0] == '[') {
61 // Find the closing bracket
62 const char *bracket = strchr(line, ']');
63 if (bracket && bracket[1] == ' ') {
64 msg = bracket + 2; // Skip "] "
65 }
66 }
67
68 // Strip trailing newlines
69 size_t len = strlen(msg);
70 while (len > 0 && (msg[len - 1] == '\n' || msg[len - 1] == '\r')) {
71 len--;
72 }
73
74 if (level & LLL_ERR) {
75 log_error("[LWS:client] %.*s", (int)len, msg);
76 } else if (level & LLL_WARN) {
77 log_warn("[LWS:client] %.*s", (int)len, msg);
78 } else if (level & LLL_NOTICE) {
79 log_info("[LWS:client] %.*s", (int)len, msg);
80 } else if (level & LLL_INFO) {
81 log_info("[LWS:client] %.*s", (int)len, msg);
82 } else if (level & LLL_DEBUG) {
83 log_debug("[LWS:client] %.*s", (int)len, msg);
84 }
85}
86
88 // Enable libwebsockets logging with our custom callback
89 // In debug builds: include LLL_DEBUG for detailed TLS/handshake diagnostics
90 // In release builds: exclude DEBUG to reduce noise
91#ifdef CMAKE_BUILD_TYPE_DEBUG
92 int log_level = LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO | LLL_DEBUG;
93#else
94 int log_level = LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO;
95#endif
96 lws_set_log_level(log_level, websocket_server_lws_log_callback);
97}
98
100 // Enable libwebsockets logging with our custom callback
101 // In debug builds: include LLL_DEBUG for detailed TLS/handshake diagnostics
102 // In release builds: exclude DEBUG to reduce noise
103#ifdef CMAKE_BUILD_TYPE_DEBUG
104 int log_level = LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO | LLL_DEBUG;
105#else
106 int log_level = LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO;
107#endif
108 lws_set_log_level(log_level, websocket_client_lws_log_callback);
109}
#define log_warn(...)
Log a WARN message.
Definition log/log.h:574
#define log_error(...)
Log an ERROR message.
Definition log/log.h:587
#define log_info(...)
Log an INFO message.
Definition log/log.h:561
#define log_debug(...)
Log a DEBUG message.
Definition log/log.h:548
📝 Logging API with multiple log levels and terminal output control
void lws_log_init_server(void)
Initialize libwebsockets logging for server mode.
Definition websocket.c:87
void lws_log_init_client(void)
Initialize libwebsockets logging for client mode.
Definition websocket.c:99
Libwebsockets logging integration.