annotate seobeo/examples/websocket_server_example.c @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
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 }