javascript - 您如何在没有互联网连接的情况下通过本地网络执行 WebRTC?

标签 javascript html webrtc offline

我想让两台不同的计算机打开一个静态 html 页面,并能够通过局域网上的 WebRTC 相互通信。在这种情况下,没有与外界的互联网连接。其中一台电脑将能够手动输入另一台电脑的 IP 地址,并使用该硬编码 IP 连接到它。是否需要 ICE 服务器?如果是这样,服务器本身是否需要通过互联网访问外部世界?

最佳答案

在这种情况下您不需要 ICE 服务器。一般来说,您通常有以下 ICE 候选人:

  • 主机(由客户端通过绑定(bind)到其本地分配的 IP 地址和端口生成)
  • srflx(服务器反射候选项是使用 STUN 生成的)
  • 接力(接力候选人使用 TURN 生成)

因此,如果没有 ICE 服务器,您将只会生成 host 候选人,这在您的情况下就足够了,因为两个用户都在同一个本地网络中。

虽然 WebRTC 支持点对点通信,但它仍然需要一个服务器来发送信号:启用媒体和网络元数据的交换以引导点对点连接。

所以这里的主要问题是你需要以某种方式在端点之间交换“提议”和“答案”,这样每一方都会有足够的关于彼此的信息。通常,一些信令协议(protocol)+公共(public)服务器用于此目的。

在您的情况下,您有 3 个选择:

  • 在两个浏览器之间建立直接的 p2p WebSocket 连接。不确定是否可能。看起来浏览器只能连接到其他端点,不能监听。
  • 手动复制\过去'offer'和'answer' SDP,我认为这也不好
  • 有一些第三台计算机安装了一些信令服务器,所以其他同行将使用它来交换彼此之间的“提议”和“答案”

关于javascript - 您如何在没有互联网连接的情况下通过本地网络执行 WebRTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51870278/

相关文章:

css - Bootstrap : dropdown menu covers content

webrtc - 如何强制通过 coturn 传输用户媒体流

javascript - 当我在 Chrome 中单击 "Allow"时,为什么 getUserMedia 会抛出 [object NavigatorUserMediaError]?

javascript - 如何从分配给变量的外部函数调用函数内部函数

javascript - 如何在 javascript、css 中更改计时器的外观?

javascript - 如何使用 javascript 附加到此数组

JavaScript 按唯一性对数组进行排序

html - 你怎么能 "un-rotate"已经旋转的对象中的元素?

html - 我在使用 'shimmer' CSS 动画时遇到问题

java - Kurento 复合网格录制