Mercurial
annotate seobeo/examples/websocket_server_example.c @ 122:96628cf126a0
[MrJuneJune] Websocket blog.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 08 Jan 2026 06:45:51 -0800 |
| parents | 7b1719fa918c |
| children | 7eb79fd91c7e |
| 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); |
|
7b1719fa918c
[Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
32 Seobeo_WebSocket_Server_Broadcast_Text(message); |
|
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 } |