@@ -116,38 +116,45 @@ const Classroom = () => {
116116 } ;
117117
118118 const useSSE = ( url : string ) => {
119- const [ data , setData ] = useState ( null ) ;
119+ const [ data , setData ] = useState < unknown > ( null ) ;
120120 const queryClient = useQueryClient ( ) ;
121121
122122 const subscribe = useCallback ( ( ) => {
123123 const eventSource = new EventSource ( url , { withCredentials : true } ) ;
124124
125125 eventSource . onmessage = ( event ) => {
126- const newData = JSON . parse ( event . data ) ;
127- setData ( newData ) ;
128- // setQueryData로 값 캐싱
129- queryClient . setQueryData ( [ "sse-data" ] , newData ) ;
130- guestDataRefetch ( ) ;
131- classroomDataRefetch ( ) ;
126+ try {
127+ const newData = JSON . parse ( event . data ) ;
128+ setData ( newData ) ;
129+ queryClient . setQueryData ( [ "sse-data" ] , newData ) ;
130+ guestDataRefetch ( ) ;
131+ classroomDataRefetch ( ) ;
132+ } catch ( error ) {
133+ console . error ( "Failed to parse SSE message:" , error ) ;
134+ }
132135 } ;
136+
133137 eventSource . addEventListener ( "action" , ( event ) => {
134- const newData = JSON . parse ( event . data ) ;
135- setData ( newData ) ;
136- // setQueryData로 값 캐싱
137- queryClient . setQueryData ( [ "sse-data" , classroomId ] , newData ) ;
138+ try {
139+ const newData = JSON . parse ( event . data ) ;
140+ setData ( newData ) ;
141+ queryClient . setQueryData ( [ "sse-data" , classroomId ] , newData ) ;
142+ guestDataRefetch ( ) ;
143+ classroomDataRefetch ( ) ;
144+ } catch ( error ) {
145+ console . error ( "Failed to parse SSE action event:" , error ) ;
146+ }
147+ } ) ;
138148
139- guestDataRefetch ( ) ;
140- classroomDataRefetch ( ) ;
149+ eventSource . addEventListener ( "error" , ( error ) => {
150+ console . error ( "SSE connection error:" , error ) ;
141151 } ) ;
142- // connection되면
143- eventSource . addEventListener ( "open" , function ( ) { } ) ;
144152
145153 return ( ) => {
146154 eventSource . close ( ) ;
147155 } ;
148- } , [ url , queryClient ] ) ;
156+ } , [ url , queryClient , classroomId , guestDataRefetch , classroomDataRefetch ] ) ;
149157
150- // 요청을 끊을 때 일어나는 useEffect
151158 useEffect ( ( ) => {
152159 const unsubscribe = subscribe ( ) ;
153160 return unsubscribe ;
0 commit comments