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

时间:2010-11-07 15:01:35

标签: javascript ajax websocket p2p

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

5 个答案:

答案 0 :(得分:50)

没有。浏览器只能启动WebSockets连接,而不能接收它们。 W3C browser API spec仅定义了如何启动出站连接。

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

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

<强>更新

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

答案 1 :(得分:31)

理论上可以使用WebRTC DataChannel

  

RTCDataChannel是一个WebRTC API,可实现高性能,低延迟,   arbritary数据的点对点通信。 API是   简单 - 类似于WebSocket - 但是之间直接进行通信   浏览器,所以即使RTCDataChannel也比WebSocket快得多   需要一个中继(TURN)服务器(当'打孔'来应对时   防火墙和NAT失败了。)

“理论上”因为它还没有稳定的浏览器支持,如果其中一个浏览器落后于symmetric NAT,你仍然需要一个中继服务器(TURN)。然而,这是一个非常有前途的功能。

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

答案 2 :(得分:6)

我正在阅读websocket和peer 2 peer并找到PeerJS

我仍然没有做过任何事情,但通过这些例子看起来很有希望。

答案 3 :(得分:0)

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

现在有一些图书馆开始在网络上弹出,例如PeerJSjs-platform-p2p,这几乎简化了事情。

答案 4 :(得分:0)

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