comparison 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
comparison
equal deleted inserted replaced
124:dbf14f84d51c 125:f236c895604e
472 Seobeo_ServerSideRender(final_body, html_path, arena); 472 Seobeo_ServerSideRender(final_body, html_path, arena);
473 Dowa_HashMap_Push_Arena(resp, "body", final_body, arena); 473 Dowa_HashMap_Push_Arena(resp, "body", final_body, arena);
474 return resp; 474 return resp;
475 } 475 }
476 476
477 void Chat_Handler(Seobeo_WebSocket_Server_Connection *p_conn, Seobeo_WebSocket_Message *p_msg, void *p_user_data)
478 {
479 (void)p_user_data;
480
481 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
482 {
483 char message[2048];
484 snprintf(message, sizeof(message), "[%s]: %.*s", p_conn->client_id, (int)p_msg->length, (char*)p_msg->data);
485
486 Seobeo_Log(SEOBEO_INFO, "[Chat] Broadcasting: %s\n", message);
487 Seobeo_WebSocket_Server_Broadcast_Text(message, p_conn);
488 }
489 }
490
491 Seobeo_Request_Entry *GetTalk(Seobeo_Request_Entry *req, Dowa_Arena *arena)
492 {
493 Seobeo_Request_Entry *resp = NULL;
494 char *final_body = Dowa_Arena_Allocate(arena, 50 * 1024);
495 Seobeo_ServerSideRender(final_body, "/talk/index.html", arena);
496 Dowa_HashMap_Push_Arena(resp, "body", final_body, arena);
497 return resp;
498 }
477 499
478 CREATE_REDIRECT_HANDLER(HomePage, "/") 500 CREATE_REDIRECT_HANDLER(HomePage, "/")
479 CREATE_REDIRECT_HANDLER(Resume, "/resume") 501 CREATE_REDIRECT_HANDLER(Resume, "/resume")
480 CREATE_REDIRECT_HANDLER(Tools, "/tools") 502 CREATE_REDIRECT_HANDLER(Tools, "/tools")
481 CREATE_REDIRECT_HANDLER(MarkDownToHtml, "/tools/markdown_to_html") 503 CREATE_REDIRECT_HANDLER(MarkDownToHtml, "/tools/markdown_to_html")
482 CREATE_REDIRECT_HANDLER(FileConverter, "/tools/file_converter") 504 CREATE_REDIRECT_HANDLER(FileConverter, "/tools/file_converter")
505 CREATE_REDIRECT_HANDLER(Talk, "/talk")
483 506
484 int main(void) 507 int main(void)
485 { 508 {
486 Seobeo_Router_Init(); 509 Seobeo_Router_Init();
510
487 Seobeo_Router_Register("GET", "/", GetHomePage); 511 Seobeo_Router_Register("GET", "/", GetHomePage);
488 Seobeo_Router_Register("GET", "/index.html", GetRedirectHomePage); 512 Seobeo_Router_Register("GET", "/index.html", GetRedirectHomePage);
489 513
490 Seobeo_Router_Register("GET", "/resume", GetResume); 514 Seobeo_Router_Register("GET", "/resume", GetResume);
491 Seobeo_Router_Register("GET", "/resume/index.html", GetRedirectResume); 515 Seobeo_Router_Register("GET", "/resume/index.html", GetRedirectResume);
506 530
507 // -- Blog --/ 531 // -- Blog --/
508 Seobeo_Router_Register("GET", "/blog", RenderBlogList); 532 Seobeo_Router_Register("GET", "/blog", RenderBlogList);
509 Seobeo_Router_Register("GET", "/blog/:blog_id", RenderBlog); 533 Seobeo_Router_Register("GET", "/blog/:blog_id", RenderBlog);
510 534
535 // -- Talk --/
536 Seobeo_Router_Register("GET", "/talk", GetTalk);
537 // Seobeo_Router_Register("GET", "/talk/index.html", GetRedirectTalk);
538
539 printf("Registered Websockets\n");
540
541 Seobeo_WebSocket_Server_Init();
542 Seobeo_WebSocket_Server_Register("/chat", Chat_Handler, NULL);
543
511 Seobeo_Web_Server_Start("mrjunejune/src", "6969", SEOBEO_MODE_EDGE, 3); 544 Seobeo_Web_Server_Start("mrjunejune/src", "6969", SEOBEO_MODE_EDGE, 3);
512 } 545 }