0

我正在为多个用户创建一个视频聊天应用程序。主持人发起呼叫,当第二个参与者加入时,在主持人和第二个参与者之间创建对等连接。

当第三个人加入时,在 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

4

1 回答 1

0

这已解决。webRtc 实现按预期工作,问题出在 React 前端层。

我正在使用映射远程用户的 React 状态来创建显示参与者实时提要的视频组件。因为在 useEffects 上调用该函数来创建该列表,所以所有元素都被重新渲染。

于 2021-04-30T07:11:21.903 回答