3

我正在使用simple-peer创建一个小型视频通话应用程序NodeJSSocketIO并且Angular

我正在尝试在full-mesh这里实施。我有一个同伴initialtor将启动循环信号。

我的代码如下。

const peer = new SimplePeer({
    initiator: true,
    trickle: false,
    stream,
});

peer.on("signal", signal => {
    console.log(userToSignal, "signal-callerID");
    this.peerService.emit("sending signal", { userToSignal, callerID, signal })
})

该函数将处于循环中。当一个新用户连接时,它会向该用户发送信号,我的问题是,peer.on("signal", signal =>即使只有 1 个用户连接,事件也会重复,它会在 1 个对等点上创建 11 个请求。这是什么问题,我该如何解决?

我正在参考此代码并尝试以角度实现它。

4

3 回答 3

2

那是正常的行为,一个offer和ice候选人。如果您只想要一条消息,请按照此处所述将涓流选项设置为 false 。请注意,这将在建立连接时产生额外的延迟。

于 2020-07-18T07:37:41.710 回答
1

我遇到了同样的问题。只需尝试使用简单的对等库版本 9.6.2。有用!!!!!

于 2020-09-03T08:11:01.807 回答
1

将此添加到您的客户。我制作了 Express webRTC 应用程序,并发现太多同行添加到我的客户响应同行阵列中。所以在Issues中找出这段代码。顺便说一句,试试这个。

socketRef.current.on("user joined", payload => {
        const item = peersRef.current.find(p => p.peerID === payload.callerID);
        if(!item) {
          const peer = addPeer(payload.signal, payload.callerID, stream);
          peersRef.current.push({
            peerID: payload.callerID,
            peer,
          })
          peers.push(peer);
        }
});

它对我有用。重新信号后,对等方不会添加到您的数组中,您将从另一个对等方获得您的视频流。

于 2020-10-26T17:46:16.337 回答