it-swarm.com.de

Erlauben Websockets die Kommunikation von P2P (Browser zu Browser)?

Um zu klären, wenn ich nach einer Browser-zu-Browser-Kommunikation frage, meine ich, dass kein Server zwischen der Weiterleitung von Nachrichten steht. Ich möchte so etwas für ein Spiel implementieren. Wenn p2p in websockets nicht möglich ist, gibt es ähnliche Alternativen? Jede Hilfe wird geschätzt. 

58
Xavier

Nein. Browser können nur WebSockets-Verbindungen initiieren und nicht empfangen. Die W3C-Browser-API-Spezifikation definiert nur, wie eine ausgehende Verbindung hergestellt wird.

Sie können eine Anwendung erstellen, die sowohl WebSockets-Verbindungen initiiert als auch akzeptiert, aber Browser tun dies nicht.

Sie können nach Pusher App suchen, mit der Sie eine WebSockets-Anwendung mit mehreren Clients erstellen können. Der Service stellt bis zu 20 gleichzeitige WebSockets-Clients kostenlos zur Verfügung (Sie können für eine höhere Skalierung bezahlen).

Update:

Das WebRTC -Protokoll und die API machen schnelle Fortschritte und ermöglichen den Aufbau eines Datenkanals zwischen zwei Peers (möglicherweise benötigen Sie noch einen STUN/TURN-Server für die erste NAT - Durchquerung und das Setup).

47
kanaka

Theoretisch ist es mit WebRTC DataChannel möglich:

RTCDataChannel ist eine WebRTC-API für hohe Leistung und geringe Latenzzeit Peer-to-Peer-Kommunikation von arbritären Daten. Die API ist einfach - ähnlich wie WebSocket - die Kommunikation erfolgt jedoch direkt zwischen Browser, so dass RTCDataChannel viel schneller als WebSocket sein kann, auch wenn Ein Relay-Server (TURN-Server) ist erforderlich (wenn das Lochen von Firewalls und NATs fehlschlägt).

"Theoretisch", weil es noch nicht von einem stabilen Browser unterstützt wird und Sie immer noch einen Relay Server (TURN) benötigen, wenn sich einer der Browser hinter einem symmetrischen NAT befindet. Trotzdem ist es ein sehr vielversprechendes Feature.

Update: Chrome 26 und Firefox 22 unterstützen standardmäßig RTCDataChannel und Firefox 19-21, wenn Sie WebRTC aktivieren, indem Sie media.peerconnection.enabled auf true (etwa: config) setzen.

30
Joel Richard

Ich las über Websocket und Peer 2 Peer und fand PeerJS .

Ich habe immer noch nichts gemacht, aber durch die Beispiele sieht es vielversprechend aus.

6
shadownrun

Heute ist es möglich, derzeit unterstützen nur Chrome, FF und Opera (Desktop).

Es gibt gerade einige Bibliotheken, die gerade im Web auftauchen, wie PeerJS und js-platform-p2p , was die Dinge ziemlich vereinfacht.

0
eric.itzhak

Ein einfacher und zuverlässiger Cross-Browser-unterstützter Weg ist die Verwendung von http://httprelay.io mit AJAX - Aufrufen. Es wird auch eine bis viele Kommunikation implementiert, was für die Spieleentwicklung nützlich sein könnte.

0
Jonas