首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >simple-peer on(“signal”)事件重复多次

simple-peer on(“signal”)事件重复多次
EN

Stack Overflow用户
提问于 2020-07-18 03:38:04
回答 3查看 1.4K关注 0票数 3

我正在使用simple-peer创建一个使用NodeJSSocketIOAngular的小型视频通话应用程序

我正在尝试在这里实现full-mesh。我有一个对等initialtor,它将启动循环中的信号。

我的代码如下。

代码语言:javascript
复制
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 =>事件也会重复自己,它会在一个对等节点上创建11个请求。这里的问题是什么?我如何解决它?

我引用了this code,并试图在angular中实现它。

EN

回答 3

Stack Overflow用户

发布于 2020-07-18 15:37:42

这是正常的行为,一个提议和冰块候选人。如果您只想要一条消息,请将trickle选项设置为false,如here所述。请注意,这将在建立连接时产生额外的延迟。

票数 2
EN

Stack Overflow用户

发布于 2020-09-03 16:11:02

我也有同样的问题。只需尝试使用simple peer library版本9.6.2。它成功了!

票数 1
EN

Stack Overflow用户

发布于 2020-10-27 01:46:16

将此代码添加到您的客户端。我制作了Express webRTC应用程序,发现有太多的对等点添加到我的客户端响应型对等点阵列中。因此,请在Issues中查找此代码。顺便说一句,试试这个。

代码语言:javascript
复制
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);
        }
});

这对我很管用。重新发送信号后,节点不会添加到您的数组中,您将从另一个节点获得视频流。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62960740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档