javascript - 为什么 webRTC 这么不稳定?代码是相同的,但是 "sometimes it doesn' t 工作,有时它工作”?

标签 javascript node.js socket.io webrtc p2p

我正在使用 localhost 测试我的 webrtc 应用程序...这是最奇怪的事情。有时它连接完美,在我的两个窗口上显示本地和远程视频。

有时在其中一个窗口上无法正常显示远程视频,因此远程视频只是“卡”在一张图像上,而不是“移动”。我猜它被卡住了,但另一个窗口仍然可以正常接收远程视频。所以这就像一种单方面的联系。

有时,webrtc 甚至根本无法连接。

我已经发生了所有这些事情,但代码是相同的。为什么webrtc如此奇怪?

还有人遇到同样的问题吗?

最佳答案

您正在触及 P2P 协议(protocol)的主要问题,因为您需要两个对等点相互连接(听起来很简单,但在互联网上很复杂)。

这实际上取决于两台计算机之间的网络拓扑。

直接连接

对等点 1 --- 对等点 2

这种情况很完美,因为 1 连接到 2 没有任何障碍,反之亦然

路由连接

对等点 1 --- 路由器 --- 对等点 2

在互联网上的日常情况下,1 连接到 2 的能力在很大程度上取决于您的路由器配置(而且通常情况下,您无法控制中间路由器的配置)。 为了克服这种情况,开发了多种解决方案:

  • uPnP :计算机告诉路由器计算机正在监听哪个端口,路由器应该监听并将数据包传输到计算机。它的采用率还不错,但存在安全问题。
  • Stun and Turn服务器

在现实世界中,点对点网络依靠 super Node 来中继流量,在这种情况下,webRTC 就没有这样的东西(除非你算上 Turn 服务器),因为它们需要承担实时视频/音频的费用当扩展到很多客户端时,流量可能会很大。

关于javascript - 为什么 webRTC 这么不稳定?代码是相同的,但是 "sometimes it doesn' t 工作,有时它工作”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308824/

相关文章:

javascript - AngularJS 检查图像是否有 404 并获取图像 src 的动态 URL

javascript - 我怎样才能把这一系列的javascript变量变成一个函数呢?

node.js - 如何用 Jest 模拟 s3.upload() - node.js

node.js - 在 Node.js 中,我是否在 "Require"时创建了一个新对象?

angularjs - 如何将json对象传递给node js服务器

javascript - 通过从缩略图或下一个上一个按钮中选择来更改图像

javascript - fetch 即使 404 也解析?

javascript - 通过socket.io 获取数据。设置: token; error: invalid credentials

javascript - Express-generator、Socket.io 事件多次发出

node.js - 如何处理未知的 socket.io 事件