【问题标题】:simple-peer on.("signal") event repeats many timessimple-peer on.("signal") 事件重复多次
【发布时间】:2020-11-07 15:49:42
【问题描述】:

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

我正在尝试在这里实现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 个请求。这是什么问题,我该如何解决?

我指的是this code 并尝试以角度实现它。

【问题讨论】:

  • 面临完全相同的问题。你找到解决办法了吗?

标签: node.js angular socket.io webrtc simple-peer


【解决方案1】:

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

【讨论】:

  • 你好。在发起者和其他发起者中涓涓细流已经是错误的。我只共享了相同的代码。
  • 所以。我该如何解决。即使我禁用了tricklesignal 事件也会多次返回。
  • 第一步是转储它发出的数据。如果它包括候选人,那么涓涓细流:false 不起作用。
  • 您好,我也有同样的问题。您找出原因/解决方案了吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    将此添加到您的客户。我制作了 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);
            }
    });
    

    它对我有用。 resignal 后,peers 不会添加到你的数组中,你会从另一个 peer 那里得到你的视频流。

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2016-01-13
      • 2018-10-11
      相关资源
      最近更新 更多