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

Xav*_*ier 67 javascript ajax p2p websocket

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

kan*_*aka 50

不.浏览器只能启动WebSockets连接,而不能接收它们.在W3C的浏览器API规范只定义了如何启动出站连接.

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

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

更新:

所述的WebRTC协议和API正在迅速进展,并允许两个对等体(可能仍然需要用于初始NAT遍历和设置一个STUN/TURN服务器)之间建立数据信道.

  • +1.虽然我不推荐第三方应用程序.建立自己的更容易. (5认同)
  • @kanaka这意味着你仍然必须第一次通过服务器才能建立对等2对等连接? (2认同)

Joe*_*ard 33

理论上,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 .

  • 现在 Edge 也可以了! (2认同)

sha*_*run 7

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

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

  • PeerJS是WebRTC的包装器. (5认同)