@@ -28,14 +28,13 @@ const VideoTest = () => {
28
28
const screenShareRef = useRef < HTMLVideoElement > ( null ) ;
29
29
30
30
const pcRef = useRef < RTCPeerConnection | null > ( null ) ;
31
- const wsRef = useRef < WebSocket | null > ( null ) ;
32
31
const localStreamRef = useRef < MediaStream | null > ( null ) ;
33
32
const screenStreamRef = useRef < MediaStream | null > ( null ) ;
34
33
const screenTrackRef = useRef < MediaStreamTrack | null > ( null ) ;
35
34
36
35
const [ roomId , setRoomId ] = useState ( '' ) ;
37
36
const [ joined , setJoined ] = useState ( false ) ;
38
- const [ answers , setAnswers ] = useState < AnswerMessage [ ] > ( [ ] ) ;
37
+ const [ answers , setAnswers ] = useState < AnswerMessage > ( ) ;
39
38
const [ statusMessage , setStatusMessage ] = useState ( '' ) ;
40
39
41
40
const { isSharingScreen, isVideoOn, isMicOn, setIsInVoiceChannel, setIsSharingScreen, setIsVideoOn, setIsMicOn } =
@@ -73,8 +72,8 @@ const VideoTest = () => {
73
72
const answerSubscription = client . subscribe ( `/topic/answer/${ roomId } ` , ( message ) => {
74
73
try {
75
74
const parsedAnswer : AnswerMessage = JSON . parse ( message . body ) ;
76
- setAnswers ( ( prev ) => [ ... prev , parsedAnswer ] ) ;
77
- console . log ( parsedAnswer ) ;
75
+ setAnswers ( parsedAnswer ) ;
76
+ console . log ( 'answer' , parsedAnswer ) ;
78
77
} catch ( error ) {
79
78
console . error ( '[stomp] answer 파싱 오류:' , error ) ;
80
79
}
@@ -107,10 +106,10 @@ const VideoTest = () => {
107
106
console . log ( '수신된 메시지' , message ) ;
108
107
109
108
if ( message . type === 'response' && message . users && message . users . length > 0 ) {
110
- const user = message . users [ 0 ] ;
109
+ const user = message . users . filter ( ( user : any ) => user . is_me === false ) ;
111
110
112
111
console . log ( '메시지정보' , message ) ;
113
- console . log ( '사용자정보' , message . users ) ;
112
+ console . log ( '사용자정보' , message . user ) ;
114
113
115
114
if ( user . sdpOffer ) {
116
115
// 사용자가 sdpOffer를 보냈는지 확인
@@ -119,54 +118,6 @@ const VideoTest = () => {
119
118
if ( ! pcRef . current ) {
120
119
await createPeerConnection ( ) ;
121
120
}
122
-
123
- if ( pcRef . current ) {
124
- try {
125
- await pcRef . current . setRemoteDescription (
126
- new RTCSessionDescription ( {
127
- type : 'offer' ,
128
- sdp : user . sdpOffer ,
129
- } ) ,
130
- ) ;
131
-
132
- // 이거 type이 response에서 하는게 맞나?
133
- if ( pendingCandidates . current . length > 0 ) {
134
- console . log ( `${ pendingCandidates . current . length } 개의 대기 중인 후보 처리 중` ) ;
135
-
136
- for ( const candidate of pendingCandidates . current ) {
137
- try {
138
- await pcRef . current . addIceCandidate ( new RTCIceCandidate ( candidate ) ) ;
139
- console . log ( '대기 중이던 ICE candidate 추가됨' ) ;
140
- } catch ( err ) {
141
- console . error ( '대기 중이던 ICE candidate 추가 중 오류:' , err ) ;
142
- }
143
- }
144
- pendingCandidates . current = [ ] ;
145
- }
146
-
147
- // 응답 보내기 -> answer 아닌 것 같아서 확인은 해야함
148
- const answer = await pcRef . current . createAnswer ( ) ;
149
- await pcRef . current . setLocalDescription ( answer ) ;
150
-
151
- if ( client && token ) {
152
- client . publish ( {
153
- destination : '/answer' ,
154
- body : JSON . stringify ( {
155
- type : MessageType . ANSWER ,
156
- data : {
157
- roomId,
158
- sdp_answer : answer . sdp ,
159
- } ,
160
- } ) ,
161
- } ) ;
162
- }
163
-
164
- setStatusMessage ( '응답을 보냈습니다. 연결 중...' ) ;
165
- } catch ( err ) {
166
- console . error ( 'Offer 처리 중 오류:' , err ) ;
167
- setStatusMessage ( `Offer 처리 오류: ${ err instanceof Error ? err . message : String ( err ) } ` ) ;
168
- }
169
- }
170
121
}
171
122
172
123
// 사용자가 sdpAnswer를 보냈는지 확인
@@ -178,7 +129,7 @@ const VideoTest = () => {
178
129
await pcRef . current . setRemoteDescription (
179
130
new RTCSessionDescription ( {
180
131
type : 'answer' ,
181
- sdp : user . sdpAnswer ,
132
+ sdp : answers ?. message ,
182
133
} ) ,
183
134
) ;
184
135
}
@@ -287,7 +238,7 @@ const VideoTest = () => {
287
238
body : JSON . stringify ( {
288
239
type : MessageType . OFFER ,
289
240
data : {
290
- roomId,
241
+ room_id : roomId ,
291
242
sdp_offer : pcRef . current . localDescription . sdp ,
292
243
} ,
293
244
} ) ,
@@ -311,15 +262,15 @@ const VideoTest = () => {
311
262
// onicecandidate 이벤트: 수집된 ICE 후보를 시그널링 서버로 전송
312
263
pcRef . current . onicecandidate = ( event ) => {
313
264
if ( event . candidate && token && client ) {
314
- console . log ( '[pc] 생성된 ICE Candidate:' , event . candidate ) ;
265
+ console . log ( '[pc] 생성된 ICE Candidate:' , event . candidate . candidate ) ;
315
266
316
267
client . publish ( {
317
268
destination : '/candidate' ,
318
269
body : JSON . stringify ( {
319
270
type : MessageType . CANDIDATE ,
320
271
data : {
321
- roomId,
322
- candidate : event . candidate ,
272
+ room_id : roomId ,
273
+ candidate : event . candidate . candidate ,
323
274
} ,
324
275
} ) ,
325
276
} ) ;
@@ -517,7 +468,7 @@ const VideoTest = () => {
517
468
body : JSON . stringify ( {
518
469
type : MessageType . OFFER ,
519
470
data : {
520
- roomId,
471
+ room_id : roomId ,
521
472
sdp_offer : pcRef . current . localDescription . sdp ,
522
473
} ,
523
474
} ) ,
@@ -658,7 +609,7 @@ const VideoTest = () => {
658
609
body : JSON . stringify ( {
659
610
type : MessageType . AUDIO ,
660
611
data : {
661
- roomId,
612
+ room_id : roomId ,
662
613
enabled : newAudioState ,
663
614
} ,
664
615
} ) ,
@@ -686,7 +637,7 @@ const VideoTest = () => {
686
637
body : JSON . stringify ( {
687
638
type : MessageType . MEDIA ,
688
639
data : {
689
- roomId,
640
+ room_id : roomId ,
690
641
enabled : newVideoState ,
691
642
} ,
692
643
} ) ,
@@ -702,13 +653,13 @@ const VideoTest = () => {
702
653
const hangUp = ( ) => {
703
654
setStatusMessage ( '통화 종료 중...' ) ;
704
655
705
- if ( token && wsRef . current && wsRef . current . readyState === WebSocket . OPEN ) {
706
- client ? .publish ( {
656
+ if ( token && client ) {
657
+ client . publish ( {
707
658
destination : '/exit' ,
708
659
body : JSON . stringify ( {
709
660
type : MessageType . EXIT ,
710
661
data : {
711
- roomId,
662
+ room_id : roomId ,
712
663
} ,
713
664
} ) ,
714
665
} ) ;
0 commit comments