iceConnectionState:“检查”如何解决

时间:2019-10-15 18:12:58

标签: node.js webrtc videochat

我正在将nodejs用于视频通话应用程序,如果用户A和用户B在不同的网络中,则: iceConnectionState:“正在检查” iceGatheringState:“聚会”

流式传输不是来自远程用户,而是当它们都在同一网络/ wifi中时它可以工作

iceConnectionState:“正在检查” iceGatheringState:“聚会”

iceConnectionState:“已完成”

1 个答案:

答案 0 :(得分:0)

您是否设置了冰服务器,尤其是转弯服务器(或至少是眩晕服务器)?您必须将一个配置对象传递到RTCPeerConnection-Constructor,其中包含字段iceServers: [{urls: 'stun:some.stun.server.address},...],因为听起来像制冰过程正在检查生成的候选地址:

  1. 它检查本地地址(例如127.0.0.1),但是由于它不在同一台计算机上运行,​​因此失败。
  2. 它检查OS IP(例如192.168.178.13之类的东西),并且如果两台计算机在同一网络中,但在不同网络中,则这些本地IP无效...
  3. 它发出STUN请求,询问外部服务器此请求来自哪个IP。地址是不同的,因为NAT完成了它的工作。然后它将尝试与此自反地址连接。对于许多NAT来说,这仍然不起作用,因为在没有以前到IP的传出连接的情况下,传入的请求将被禁止。
  4. 它发出TURN请求,并通过中继服务器路由整个对话。几乎在任何情况下都可以使用

如果您未在配置中设置STUN和TURN服务器,则将不会尝试第3步,因为stun服务器没有自反地址,也没有Turn服务器中继地址。因此,集冰可能会在第2步结束(并完成),但将没有连接,因为1.和2.将在不同的网络上失败