2010-11-07 186 views
53

澄清當我詢問瀏覽器到瀏覽器的通信時,我的意思是在轉發消息之間沒有服務器。我想爲遊戲實現這樣的事情。如果websockets中的p2p不可行,是否有類似的選擇?任何幫助表示讚賞。websockets是否允許p2p(瀏覽器到瀏覽器)通信?

+0

http://socket.io – 2010-11-13 21:40:57

+0

是的,但沒有瀏覽器有一個工作實現,我相信它現在是[流API]的一部分。(http://www.whatwg.org/specs/web-apps /電流工作/多頁/命令。html#peer-to-peer-connections) – antimatter15 2010-11-07 15:38:14

+5

W3C現在草擬了[WebRTC](http://www.w3.org/TR/webrtc/)規範,討論了對等連接等問題。 – 2011-12-14 08:52:12

回答

42

否瀏覽器只能啓動WebSockets連接,不能接收它們。 W3C browser API spec僅定義如何啓動出站連接。

您可以創建既啓動又可以接受WebSockets連接的應用程序,但瀏覽器不這樣做。

您可能會看到Pusher App,您可以使用它來構建具有多個客戶端的WebSockets應用程序。該服務免費提供多達20個同時使用的WebSockets客戶端(您可以支付更高的縮放比例)。

更新

WebRTC協議和API正在迅速進展,並允許兩個對等體之間建立一個數據信道(可能仍然需要用於初始NAT遍歷和設置一個STUN/TURN服務器) 。

+3

+1。雖然我不會推薦第三方應用程序。更容易建立自己的。 – 2010-11-08 17:23:01

+0

推送器現在提供20個同時連接和每天100.000條消息免費:) – Tieme 2012-10-09 16:31:49

+0

我認爲你應該更新你的答案: https://labs.ericsson.com/developer-community/blog/beyond-html5-peer-peer-對話視頻 – 2013-08-30 22:51:57

27

在理論上有可能用WebRTC DataChannel

RTCDataChannel爲高性能,低等待時間, 對等網絡arbritary數據的通信的的WebRTC API。該API爲 簡單類似於WebSocket - 但通信直接發生在 瀏覽器之間,所以即使需要中繼(TURN)服務器(當'hole punching'應對 防火牆和NAT時,RTCDataChannel也可能比WebSocket快得多,即使需要 失敗)。

「理論上」,因爲它不是由一個穩定的瀏覽器還不支持,你仍然需要一箇中繼服務器(TURN)如果瀏覽器中的一個是symmetric NAT後面。不過,這是一個非常有前途的功能。

更新:鉻26和Firefox 22默認和Firefox 19-21支持RTCDataChannel如果您通過設置media.peerconnection.enabled爲true(about:config中)啓用的WebRTC。

6

我在讀websocket和peer 2 peer,發現PeerJS

雖然我還沒有做任何事情,但通過它的例子看起來很有前途。

+4

PeerJS是WebRTC的封裝。 – 2014-11-24 10:17:03

0

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

現在有一些圖書館開始在網絡上出現,比如PeerJSjs-platform-p2p,這幾乎可以簡化事情。

0

簡單而可靠的跨瀏覽器支持的方式是使用http://httprelay.io與AJAX調用。它也實現了一對多的溝通,對遊戲開發有用。