annotate seobeo/examples/websocket_server_example.c @ 168:f3084bca7317

[Misc] Fixed all errors and all tests should pass now.
author MrJuneJune <me@mrjunejune.com>
date Mon, 19 Jan 2026 16:29:02 -0800
parents 7eb79fd91c7e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include "seobeo/seobeo.h"
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #include <stdio.h>
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include <string.h>
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 void Echo_Handler(Seobeo_WebSocket_Server_Connection *p_conn, Seobeo_WebSocket_Message *p_msg, void *p_user_data)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 (void)p_user_data;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 printf("[Echo] Received text: %.*s\n", (int)p_msg->length, (char*)p_msg->data);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 Seobeo_WebSocket_Server_Send_Text(p_conn, (char*)p_msg->data);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 else if (p_msg->opcode == SEOBEO_WS_OPCODE_BINARY)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17 printf("[Echo] Received %zu bytes of binary data\n", p_msg->length);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18 Seobeo_WebSocket_Server_Send_Binary(p_conn, p_msg->data, p_msg->length);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 void Chat_Handler(Seobeo_WebSocket_Server_Connection *p_conn, Seobeo_WebSocket_Message *p_msg, void *p_user_data)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 (void)p_user_data;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 char message[2048];
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29 snprintf(message, sizeof(message), "[%s]: %.*s", p_conn->client_id, (int)p_msg->length, (char*)p_msg->data);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 printf("[Chat] Broadcasting: %s\n", message);
128
7eb79fd91c7e [Misc] Fixed all bazel targets. I should creat a separate scripts for these lol.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
32 Seobeo_WebSocket_Server_Broadcast_Text(message, p_conn);
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36 void Binary_Handler(Seobeo_WebSocket_Server_Connection *p_conn, Seobeo_WebSocket_Message *p_msg, void *p_user_data)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 (void)p_user_data;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39 (void)p_conn;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41 if (p_msg->opcode == SEOBEO_WS_OPCODE_BINARY)
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43 printf("[Binary] Received %zu bytes, broadcasting to all clients\n", p_msg->length);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44 Seobeo_WebSocket_Server_Broadcast_Binary(p_msg->data, p_msg->length);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 }
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 int main()
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 printf("=== Seobeo WebSocket Server Example ===\n\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 Seobeo_WebSocket_Server_Init();
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 Seobeo_WebSocket_Server_Register("/echo", Echo_Handler, NULL);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 printf("Registered /echo endpoint\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 Seobeo_WebSocket_Server_Register("/chat", Chat_Handler, NULL);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 printf("Registered /chat endpoint\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60 Seobeo_WebSocket_Server_Register("/binary", Binary_Handler, NULL);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 printf("Registered /binary endpoint\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 printf("\nStarting server on port 8080...\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 printf("\nTest with:\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 printf(" ws://localhost:8080/echo - Echo server\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 printf(" ws://localhost:8080/chat - Chat room\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67 printf(" ws://localhost:8080/binary - Binary data broadcast\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 printf("\n");
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70 Seobeo_Web_Server_Start(NULL, "8080", SEOBEO_MODE_FORK, 0);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 return 0;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 }