Ermöglichen Websockets die Kommunikation mit P2P (Browser zu Browser)?


74

Um zu verdeutlichen, wenn ich nach der Kommunikation von Browser zu Browser frage, meine ich, dass zwischen den Weiterleitungsnachrichten kein Server vorhanden ist. 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.


Ja, aber kein Browser hat eine funktionierende Implementierung, und ich glaube, er ist jetzt Teil der Stream-API.
Antimaterie15

5
Das W3C entwirft nun die WebRTC- Spezifikation, in der unter anderem über Peer-to-Peer-Verbindungen gesprochen wird.
Pierre de LESPINAY

Antworten:


51

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

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

Möglicherweise sehen Sie sich die Pusher-App an, mit der Sie eine WebSockets-Anwendung mit mehreren Clients erstellen können. Der Dienst bietet bis zu 20 gleichzeitige WebSockets-Clients kostenlos an (Sie können für eine höhere Skalierung bezahlen).

Update :

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


5
+1. Ich würde jedoch keine Apps von Drittanbietern empfehlen. Viel einfacher, eigene zu bauen.
Josh K

Pusher bietet jetzt 20 gleichzeitige Verbindungen und 100.000 Nachrichten pro Tag kostenlos :)
Tieme

Ich denke, Sie sollten Ihre Antwort aktualisieren: labs.ericsson.com/developer-community/blog/…
Mehdi Karamosly

1
@kanaka bedeutet das, dass Sie das erste Mal noch den Server durchlaufen müssen, um eine Peer-2-Peer-Verbindung herzustellen?
Mehdi Karamosly

1
@MehdiKaramosly, es ist theoretisch möglich ( blog.printf.net/articles/2013/05/17/… ), aber es ist ein sehr ungewöhnlicher Anwendungsfall, da sich fast jeder hinter einer NAT-Firewall befindet und Sie noch eine Möglichkeit benötigen, die Signalisierung einzurichten (Teilen Sie die Verbindungsdetails mit).
Kanaka

36

Theoretisch ist es mit WebRTC DataChannel möglich :

RTCDataChannel ist eine WebRTC-API für die Peer-to-Peer-Kommunikation von britischen Daten mit hoher Leistung und geringer Latenz. Die API ist einfach - ähnlich wie WebSocket -, aber die Kommunikation erfolgt direkt zwischen Browsern, sodass RTCDataChannel viel schneller als WebSocket sein kann, selbst wenn ein Relay-Server (TURN) erforderlich ist (wenn das "Lochloch" zur Bewältigung von Firewalls und NATs fehlschlägt).

"Theoretisch", da es noch nicht von einem stabilen Browser unterstützt wird und Sie weiterhin einen Relay-Server (TURN) benötigen, wenn sich einer der Browser hinter einem symmetrischen NAT befindet . Trotzdem ist es ein wirklich 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.enabledtrue festlegen (about: config).



Jetzt macht Edge auch!
Hindol

8

Ich habe über Websocket und Peer 2 Peer gelesen und PeerJS gefunden .

Ich habe zwar noch nichts gemacht, aber anhand der Beispiele sieht es vielversprechend aus.


5
PeerJS ist ein Wrapper über WebRTC.
Gábor Imre


0

Eine einfache und zuverlässige browserübergreifende Methode ist die Verwendung von http://httprelay.io mit AJAX-Aufrufen. Es implementiert auch eine bis viele Kommunikation, was für die Spieleentwicklung nützlich sein könnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.