diff mrjunejune/main.c @ 125:f236c895604e

[MrJuneJune] Added web socket for chat to this.
author June Park <parkjune1995@gmail.com>
date Thu, 08 Jan 2026 08:46:49 -0800
parents dbf14f84d51c
children 7eb79fd91c7e
line wrap: on
line diff
--- a/mrjunejune/main.c	Thu Jan 08 07:31:32 2026 -0800
+++ b/mrjunejune/main.c	Thu Jan 08 08:46:49 2026 -0800
@@ -474,16 +474,40 @@
   return resp;
 }
 
+void Chat_Handler(Seobeo_WebSocket_Server_Connection *p_conn, Seobeo_WebSocket_Message *p_msg, void *p_user_data)
+{
+  (void)p_user_data;
+
+  if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
+  {
+    char message[2048];
+    snprintf(message, sizeof(message), "[%s]: %.*s", p_conn->client_id, (int)p_msg->length, (char*)p_msg->data);
+
+    Seobeo_Log(SEOBEO_INFO, "[Chat] Broadcasting: %s\n", message);
+    Seobeo_WebSocket_Server_Broadcast_Text(message, p_conn);
+  }
+}
+
+Seobeo_Request_Entry *GetTalk(Seobeo_Request_Entry *req, Dowa_Arena *arena)
+{
+  Seobeo_Request_Entry *resp = NULL;
+  char *final_body = Dowa_Arena_Allocate(arena, 50 * 1024);
+  Seobeo_ServerSideRender(final_body, "/talk/index.html", arena);
+  Dowa_HashMap_Push_Arena(resp, "body", final_body, arena);
+  return resp;
+}
 
 CREATE_REDIRECT_HANDLER(HomePage, "/")
 CREATE_REDIRECT_HANDLER(Resume, "/resume")
 CREATE_REDIRECT_HANDLER(Tools, "/tools")
 CREATE_REDIRECT_HANDLER(MarkDownToHtml, "/tools/markdown_to_html")
 CREATE_REDIRECT_HANDLER(FileConverter, "/tools/file_converter")
+CREATE_REDIRECT_HANDLER(Talk, "/talk")
 
 int main(void)
 {
   Seobeo_Router_Init();
+
   Seobeo_Router_Register("GET", "/", GetHomePage);
   Seobeo_Router_Register("GET", "/index.html", GetRedirectHomePage);
 
@@ -508,5 +532,14 @@
   Seobeo_Router_Register("GET", "/blog", RenderBlogList);
   Seobeo_Router_Register("GET", "/blog/:blog_id", RenderBlog);
 
+  // -- Talk --/
+  Seobeo_Router_Register("GET", "/talk", GetTalk);
+  // Seobeo_Router_Register("GET", "/talk/index.html", GetRedirectTalk);
+
+  printf("Registered Websockets\n");
+
+  Seobeo_WebSocket_Server_Init();
+  Seobeo_WebSocket_Server_Register("/chat", Chat_Handler, NULL);
+
   Seobeo_Web_Server_Start("mrjunejune/src", "6969", SEOBEO_MODE_EDGE, 3);
 }