From 5a5ab6f2e438acd4072c926c842fd5e677c26a9b Mon Sep 17 00:00:00 2001 From: soohyuniii Date: Thu, 16 Oct 2025 22:26:36 +0900 Subject: [PATCH] fix: add message type to open chat --- src/pages/Chat.tsx | 47 ++++++++++++++++++++++++++----------------- src/types/openChat.ts | 2 +- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/pages/Chat.tsx b/src/pages/Chat.tsx index a7d6b61..02c359c 100644 --- a/src/pages/Chat.tsx +++ b/src/pages/Chat.tsx @@ -76,46 +76,49 @@ const Chat = () => { const handleWebSocketMessage = useCallback( (wsMessage: WebSocketMessage) => { + console.log("πŸ“¨ WebSocket λ©”μ‹œμ§€ μˆ˜μ‹  처리:", wsMessage); + + // μ—λŸ¬ λ©”μ‹œμ§€ 처리 if (wsMessage.type === "ERROR") { - // μ—λŸ¬ λ©”μ‹œμ§€ 처리 const errorMessage: Message = { role: "assistant", content: wsMessage.message, messageType: "system" }; - - // 쀑볡 μ‹œμŠ€ν…œ λ©”μ‹œμ§€ λ°©μ§€ setMessages((prev) => { - const lastMessage = prev[prev.length - 1]; + const last = prev[prev.length - 1]; if ( - lastMessage?.messageType === "system" && - lastMessage.content === wsMessage.message + last?.messageType === "system" && + last.content === wsMessage.message ) { return prev; } return [...prev, errorMessage]; }); - } else if (wsMessage.type === "NOTICE") { - // μ‹œμŠ€ν…œ μ•Œλ¦Ό λ©”μ‹œμ§€ 처리 (μž…μž₯/퇴μž₯) - const systemMessage: Message = { + } + + // μž…μž₯/퇴μž₯ μ•Œλ¦Ό (NOTICE) + else if (wsMessage.type === "NOTICE" && wsMessage.message) { + const noticeMessage: Message = { role: "assistant", content: wsMessage.message, messageType: "system" }; - - // 쀑볡 μ‹œμŠ€ν…œ λ©”μ‹œμ§€ λ°©μ§€ setMessages((prev) => { - const lastMessage = prev[prev.length - 1]; + const last = prev[prev.length - 1]; if ( - lastMessage?.messageType === "system" && - lastMessage.content === wsMessage.message + last?.messageType === "system" && + last.content === wsMessage.message ) { return prev; } - return [...prev, systemMessage]; + return [...prev, noticeMessage]; }); - } else if ( - wsMessage.type === null && + } + + // 일반 μ±„νŒ… λ©”μ‹œμ§€ (MESSAGE) + else if ( + wsMessage.type === "MESSAGE" && wsMessage.nickname && wsMessage.message ) { @@ -124,12 +127,12 @@ const Chat = () => { return; } - // λ‹€λ₯Έ μ‚¬μš©μžμ˜ λ©”μ‹œμ§€λ§Œ 화면에 μΆ”κ°€ console.log( - "λ‹€λ₯Έ μ‚¬μš©μž λ©”μ‹œμ§€ μΆ”κ°€:", + "πŸ’¬ λ‹€λ₯Έ μ‚¬μš©μž λ©”μ‹œμ§€ μΆ”κ°€:", wsMessage.nickname, wsMessage.message ); + const newMessage: Message = { role: "assistant", content: wsMessage.message, @@ -137,8 +140,14 @@ const Chat = () => { mbti: wsMessage.mbti || undefined, messageType: "text" }; + setMessages((prev) => [...prev, newMessage]); } + + // μ˜ˆμƒμΉ˜ λͺ»ν•œ λ©”μ‹œμ§€ ν˜•μ‹ 둜그 + else { + console.warn("μ•Œ 수 μ—†λŠ” WebSocket λ©”μ‹œμ§€:", wsMessage); + } }, [nickname] ); diff --git a/src/types/openChat.ts b/src/types/openChat.ts index 2542d99..b3db12e 100644 --- a/src/types/openChat.ts +++ b/src/types/openChat.ts @@ -36,7 +36,7 @@ export interface WebSocketRequestMessage { // μ›Ήμ†ŒμΌ“ 응닡 λ©”μ‹œμ§€ ν˜•νƒœ export interface WebSocketMessage { - type: "ERROR" | "NOTICE" | null; + type: "ERROR" | "NOTICE" | "MESSAGE" | null; mbti: string | null; nickname: string | null; message: string;