JavaScript WebSockets mit UDP?


80

Ich schreibe eine JavaScript-Anwendung, die eine große Datenmenge von anderen Benutzern erhalten muss. Es ist nicht wichtig, ob einige dieser Daten verloren gehen. Gibt es eine Möglichkeit, JavaScript WebSockets mit UDP anstelle von TCP zu verwenden?


1
Dies kann über webRTC erfolgen. Der Spieleserver geckosio.github.io verwendet diese Technik.
Fost

Antworten:


52

Nein, es ist keine UDP-Kommunikation innerhalb von JavaScript möglich. Es tut uns leid.


2
@TimeMachine Sie werden keine WebSockets erstellen, die auf TCP basieren. Der erste Handshake wird auch so ausgeführt, dass er von Webservern als HTTP-Upgrade-Anforderung erkannt wird. Weitere Informationen
Ivo Wetzel

3
@IvoWetzel Warum heißt das, dass sie es nicht tun? Ich kann mir verschiedene Möglichkeiten vorstellen, um UDP-Websockets sicher zu implementieren.
Timmmm

32
Die Antwort ist nicht mehr aktuell: WebRTC webrtc.org bietet (experimentelles) UDP im Browser an und nodejs können auf udp-Sockets auf dem Server zugreifen.
Mirko

Hier ist eine [Diskussion dieses Themas] [1] in Bezug auf Spiele. Dort behandelt er Websockets, Webrtc (eine mögliche Wahl für UDP, aber kompliziert), Quic (nur in Google Chrome) und sein [netcode.io] [2]. [1]: gafferongames.com/post/… [2]: github.com/RedpointGames/netcode.io-browser
Diagon

UDP / Datagram Sockets- Verbindung mit node.js! Das dgram-Modul bietet eine Implementierung von UDP-Datagramm-Sockets.
Derk Jan Speelman

55

Es hört sich so an, als würden Sie auf WebRTC warten, das den Standardprozess durchläuft. Wie andere bereits erwähnt haben, wird WebSockets aufgrund der Initiierung mit einem HTTP-Upgrade über TCP ausgeführt.


4
WebRTC sieht fast großartig aus, aber soweit ich das beurteilen kann, müssen Sie RTCDataChannel für die Datenkommunikation verwenden, und das verwendet SCTP, das keine unzuverlässigen Lieferungen unterstützt (für Spiele erforderlich). Bearbeiten: Abbrechen, dies unterstützt einen unzuverlässigen Modus. Guter Artikel hier
Timmmm

Nicht nur das, es ist auch Peer 2 Peer, nicht großartig für einen autoritären Server.
NiCk Newman

11
Es gibt keinen Grund, warum einer der "Peers" nicht Ihr Server sein kann.
Tschad


4

Das WebSockets-Protokoll ist nur über TCP, wie derzeit definiert.

Sie können UDP mit Flash ausführen, wenn Sie bereit sind, einen RTMFP-Server (Real Time Messaging Flow Protocol) zu verwenden.


1

Wenn diese Frage noch aussteht: Ich habe ein Projekt namens JNEXT gefunden und es gibt ein Beispiel für die Verwendung von UDP. Das Projekt selbst scheint angehalten zu sein, aber zumindest in Firefox funktioniert es (es funktioniert nicht mit Chrome und Opera). Vielleicht lohnt es sich, danach zu suchen.


3
Wenn ich möchte, dass der Benutzer Software installiert, könnte ich Flash noch besser verwenden.

Flash bietet Ihnen jedoch kein UDP.
Brian DiCasa

-4

Ich denke, Sie können die Silverliht 4-Technologie nutzen. Sie können eine Silverlight 4-Anwendung für die Kommunikation mit dem Server erstellen und diese dann in eine HTML-Seite einbinden. Dann kann Ihr JavaScript TCP-Verbindungen über die Silverlight 4-Anwendung herstellen!


Ich denke, dass dies für eine Web-App, die nur von Mac- und iPhone-Entwicklern verwendet werden soll, sehr schwierig ist. ^^ '

2
Außerdem unterstützt Silverlight kein "echtes" UDP, sondern nur Multicast-UDP, und das funktioniert nur im LAN.
Martin Ørding-Thomsen

2
Die Frage ist für UDP nicht TCP
markmnl

-9

Sie können einen WebSocket-Server schreiben, der als Proxy / Bridge zwischen TCP / UDP dient.


21
Das würde den gesamten Zweck von UDP zunichte machen.
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.