From 2c026d596dffdb405f9dcca90ce3838884e26125 Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Mon, 16 Mar 2026 19:27:16 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20SDPOffer=20=D0=BF=D1=80=D0=B8=20renegotiation=20?= =?UTF-8?q?=D0=BE=D1=82=20SFU?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/providers/CallProvider/CallProvider.tsx | 49 ++++++--------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/app/providers/CallProvider/CallProvider.tsx b/app/providers/CallProvider/CallProvider.tsx index 0e30063..d948a4a 100644 --- a/app/providers/CallProvider/CallProvider.tsx +++ b/app/providers/CallProvider/CallProvider.tsx @@ -81,30 +81,7 @@ export function CallProvider(props : CallProviderProps) { */ let packet = new PacketIceServers(); send(packet); - - //debug - - setInterval(async () => { - if(callState == CallState.ACTIVE){ - if(peerConnectionRef.current){ - const stats = await peerConnectionRef.current.getStats(); - stats.forEach((report) => { - - if (report.type === "inbound-rtp" && !report.isRemote) { - const kind = (report as any).kind || (report as any).mediaType; - const bytesReceived = (report as any).bytesReceived ?? 0; - const packetsReceived = (report as any).packetsReceived ?? 0; - const packetsLost = (report as any).packetsLost ?? 0; - - console.log( - `[inbound ${kind}] bytesReceived=${bytesReceived}, packetsReceived=${packetsReceived}, packetsLost=${packetsLost}` - ); - } - }); - } - } - }, 2000); - }, [callState, peerConnectionRef]); + }, []); usePacket(28, async (packet: PacketIceServers) => { let iceServers = packet.getIceServers(); @@ -130,7 +107,7 @@ export function CallProvider(props : CallProviderProps) { }, []); usePacket(27, async (packet: PacketWebRTC) => { - if(!activeCall || callState != CallState.WEB_RTC_EXCHANGE){ + if(callState != CallState.WEB_RTC_EXCHANGE && callState != CallState.ACTIVE){ /** * Нет активного звонка или мы не на стадии обмена WebRTC сигналами, игнорируем */ @@ -178,18 +155,18 @@ export function CallProvider(props : CallProviderProps) { * SFU сервер отправил нам оффер, например при renegotiation, нам нужно его принять и * отправить ответ (ANSWER) */ - const sdp = JSON.parse(packet.getSdpOrCandidate()); - await peerConnectionRef.current?.setRemoteDescription(new RTCSessionDescription(sdp)); - let answer = await peerConnectionRef.current?.createAnswer(); - await peerConnectionRef.current?.setLocalDescription(answer); - let answerSignal = new PacketWebRTC(); - answerSignal.setSignalType(WebRTCSignalType.ANSWER); - answerSignal.setSdpOrCandidate(JSON.stringify(answer)); - send(answerSignal); - info("Received WebRTC offer, set remote description and sent answer"); - return; + const sdp = JSON.parse(packet.getSdpOrCandidate()); + await peerConnectionRef.current?.setRemoteDescription(new RTCSessionDescription(sdp)); + let answer = await peerConnectionRef.current?.createAnswer(); + await peerConnectionRef.current?.setLocalDescription(answer); + let answerSignal = new PacketWebRTC(); + answerSignal.setSignalType(WebRTCSignalType.ANSWER); + answerSignal.setSdpOrCandidate(JSON.stringify(answer)); + send(answerSignal); + info("Received WebRTC offer, set remote description and sent answer"); + return; } - }, [activeCall, sessionKeys, callState]); + }, [activeCall, sessionKeys, callState, roomIdRef]); usePacket(26, async (packet: PacketSignalPeer) => { const signalType = packet.getSignalType();