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

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

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

你可以创build一个既启动又接受WebSocket连接的应用程序,但浏览器不这样做。

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

更新

WebRTC协议和API正在快速发展,并允许在两个对等体之间build立一个数据通道(对于初始的NAT穿越和设置,您可能还需要一个STUN / TURN服务器)。

从理论上讲, WebRTC DataChannel是可能的:

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

“在理论上”,因为它还不被一个稳定的浏览器支持,如果其中一个浏览器位于对称NAT之后,你仍然需要一个中继服务器(TURN)。 不过,这是一个非常有前途的function。

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

我正在阅读有关websocket和peer 2 peer,并findPeerJS 。

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

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

现在有一些图书馆开始在networking上出现,比如PeerJS和js-platform-p2p ,这些东西几乎可以简化。

简单可靠的跨浏览器支持的方式是使用http://httprelay.io与AJAX调用。; 它也实现了一对多的沟通,对游戏开发有什么用处。