我正在为多个用户创建一个视频聊天应用程序。主机发起呼叫,当第二参与者加入时,在主机和第二参与者之间创建对等连接。
当第三人加入时,在1&3和2&3.(每个客户端有n-1个对等连接(。新的连接如预期的那样工作,但是媒体在1&2次休息。
在创建对等连接之后,我正在用索引为每个对等连接注册适当的事件侦听器-
peerConnection.onicecandidate = (event) => handleIceCanditate(pcIndex, event);
peerConnection.ontrack = (event) => handleTrack(pcIndex, event);
peerConnection.onnegotiationneeded = (event) => handleNegotiationNeeded(pcIndex, event);
peerConnection.oniceconnectionstatechange = (event) => handleICEConnectionStateChange(pcIndex, event);
peerConnection.onicegatheringstatechange = (event) => handleICEGatheringStateChange(pcIndex, event);
peerConnection.onsignalingstatechange = (event) => handleSignalingStateChange(pcIndex, event);
索引为0的旧对等连接在停止工作之前不会触发任何事件。关于如何调试问题的任何线索。旧对等连接的连接状态为connected
此问题已解决。webRtc的实现如预期的那样工作,问题出现在React前端层。
我使用映射远程用户的React state来创建向参与者显示实时提要的视频组件。因为函数是在useEffects上调用以创建该列表的,所以所有元素都被重新呈现。