javascript - 浏览器可以直接与同一网络上的另一个浏览器通信吗?

标签 javascript html browser webrtc p2p

我正在尝试寻找一种在同一网络上的两个浏览器之间进行通信的方法,以在没有服务器往返(无 STUN/ICE/TURN)的情况下建立 WebRTC。基本上是找到的方法的替代方法 here ,其中“握手”是通过复制/邮寄/粘贴完成的。

在筛选了所有我能找到的跨浏览器通信示例(如 via cookiesWebTCP )以及一堆关于 SO 的问题(如 here )之后,我回到想知道一个简单的事情:

问题:
如果 Alice 和 Bob 在同一网络上访问同一页面 foo.html,并且他们知道彼此的内部分配 IP 地址,那么他们是否可以通过任何方式纯粹与浏览器上可用的内容进行通信?

这不包括非标准 API,例如 Mozilla TCP_Socket_API ,但除此之外,所有“技巧”都是允许的(img 标签、iframe、cookie 等)。

我很好奇我是否可以通过浏览器听到同一网络上的某个人“广播”一些东西。

编辑:
foo.html 将在静态服务器上,没有逻辑,没有 ICE,没有快捷方式。

编辑:
仍然不是一个解决方案,而是一个 websocket 服务器,因为 Chrome 扩展越来越接近。此处示例:almost pure browser serverless WebRTC

最佳答案

是的,您可以使用 WebRTC 通过本地网络在两个浏览器之间建立直接连接。它需要使用 ICE,但这并不意味着需要外部 STUN 或 TURN 服务器。如果浏览器在同一个网络上,ICE 将仅在每个浏览器的本地候选中成功。

STUN/TURN 只是为了保证两个端点可以建立连接,即使它们位于不同的网络和 NAT 后面。

事实上,如果您使用大多数 WebRTC 示例应用程序(例如 apprtc )以及连接在本地网络中的两个浏览器,ICE 最有可能选择并使用这对本地地址。在这种情况下,将在 TURN 服务器上分配 channel ,但不会使用它。

在您的 WebRTC 应用程序中,您可以通过在创建 PeerConnection 时传递空的 iceServers 来禁用 STUN/TURN。

关于javascript - 浏览器可以直接与同一网络上的另一个浏览器通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148661/

相关文章:

javascript - Business Catalyst 中的 jQuery 日期格式

javascript - Android上的Javascript音频播放已静音

javascript - TypeError Ajax Post - Flask Python

browser - 'de' 和 'de-DE' 语言代码有什么区别?

javascript - 从 JavaScript 加载页面

javascript - 在 javascript 中-将变量保存为引用

html - 如何在表格顶部设置表格标题?

selenium - 如何复制浏览器崩溃以进行自动化测试

css:从覆盖的边框中删除 "shadows"

javascript - 部分类型的参数不能分配给类型的参数