簡體   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