繁体   English   中英

websockets 是否允许 p2p(浏览器到浏览器)通信?

[英]Do websockets allow for p2p (browser to browser) communication?

为了澄清当我询问浏览器到浏览器的通信时,我的意思是在转发消息之间没有服务器。 我想为游戏实现这样的东西。 如果 websockets 中的 p2p 是不可能的,是否有类似的替代方案? 任何帮助表示赞赏。

不能。浏览器只能发起 WebSockets 连接,不能接收它们。 W3C 浏览器 API 规范仅定义了如何启动出站连接。

您可以创建一个同时启动和接受 WebSockets 连接的应用程序,但浏览器不会这样做。

您可以查看Pusher App ,您可以使用它来构建具有多个客户端的 WebSockets 应用程序。 该服务免费提供多达 20 个同时的 WebSockets 客户端(您可以为更高的扩展付费)。

更新

WebRTC协议和 API 进展迅速,并允许在两个对等点之间建立数据通道(您可能仍然需要一个 STUN/TURN 服务器来进行初始 NAT 遍历和设置)。

理论上可以使用WebRTC DataChannel

RTCDataChannel 是一个 WebRTC API,用于任意数据的高性能、低延迟、点对点通信。 API 很简单——类似于 WebSocket——但是通信直接发生在浏览器之间,因此即使需要中继 (TURN) 服务器(当“打孔”以应对防火墙和 NAT 失败时),RTCDataChannel 也可以比 WebSocket 快得多。

“理论上”,因为稳定的浏览器尚不支持它,如果其中一个浏览器位于对称 NAT后面,您仍然需要中继服务器 (TURN)。 尽管如此,这是一个非常有前途的功能。

更新: Chrome 26 和 Firefox 22 默认支持 RTCDataChannel,如果您通过将media.peerconnection.enabled设置为 true (about:config) 来启用 WebRTC,则 Firefox 19-21 支持。

我正在阅读有关 websocket 和 peer 2 peer 的信息,并找到了PeerJS

我仍然没有做任何事情,但从例子来看,它看起来很有希望。

现在有可能,目前只有 Chrome、FF 和 Opera 支持它(桌面)。

现在网络上开始出现一些库,例如PeerJSjs-platform-p2p ,它们大大简化了事情。

简单可靠的跨浏览器支持方式是使用http://httprelay.io和 AJAX 调用。 它还实现了对游戏开发有用的一对多通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM