JavaScript WebSockets z UDP?


80

Piszę aplikację JavaScript, która musi otrzymywać ogromne ilości danych od innych użytkowników. Nie ma znaczenia, czy niektóre z tych danych zostaną utracone. Czy istnieje sposób używania JavaScript WebSockets z protokołem UDP zamiast TCP?


1
Można to zrobić przez webRTC. Serwer gier geckosio.github.io wykorzystuje tę technikę.
Fost

Odpowiedzi:


52

Nie, komunikacja UDP w JavaScript nie jest możliwa. Przepraszam.


2
@TimeMachine Nie są one oparte na protokole WebSockets na bazie TCP, wstępne uzgadnianie jest również wykonywane tak, że jest rozpoznawane przez serwery WWW jako żądanie aktualizacji HTTP. Więcej o protokole można przeczytać w najnowszym szkicu: tools.ietf.org/html/draft-abarth-thewebsocketprotocol-00
Ivo Wetzel

3
@IvoWetzel Dlaczego to oznacza, że ​​nie będą? Przychodzi mi do głowy kilka sposobów bezpiecznego zaimplementowania UDP Websockets.
Timmmm,

35
Odpowiedź nie jest już aktualna: WebRTC webrtc.org oferuje (eksperymentalnie) UDP w przeglądarce, a nodejs może uzyskać dostęp do gniazd udp na serwerze.
Mirko,

Oto [omówienie tego problemu] [1] w odniesieniu do gier. Tam omawia websockets, webrtc (możliwy wybór dla UDP, ale skomplikowany), quic (tylko w Google Chrome) i jego [netcode.io] [2]. [1]: gafferongames.com/post/… [2]: github.com/RedpointGames/netcode.io-browser
Diagon

Połączenie UDP / Datagram Sockets z node.js! Moduł dgram zapewnia implementację gniazd UDP Datagram.
Derk Jan Speelman

57

Wygląda na to, że czekasz na WebRTC, który przechodzi przez proces tworzenia standardów. WebSockets, jak zauważyli inni ludzie, działają przez TCP w wyniku inicjacji z aktualizacją HTTP.


4
WebRTC wygląda prawie wspaniale, ale o ile wiem, musisz używać RTCDataChannel do komunikacji danych, a to wykorzystuje SCTP, który nie obsługuje niewiarygodnych dostaw (konieczne w grach). Edycja: Anuluj to, obsługuje zawodny tryb. Dobry artykuł
Timmmm,

Nie tylko to, ale jest to Peer 2 Peer, niezbyt dobry dla autorytarnego serwera.
NiCk Newman

11
Nie ma powodu, dla którego jeden z „rówieśników” nie może być Twoim serwerem.
Czad

6

Wygląda na to, że pytanie jest przeznaczone dla UDP po stronie klienta, ale ponieważ tu trafiłem ...

Można to zrobić w JavaScript UDP na serwerze przy użyciu node.js dgrampakiet .


4

Protokół WebSockets jest używany przez TCP tylko zgodnie z aktualnie zdefiniowaną definicją.

Możesz zrobić UDP z Flash, jeśli chcesz użyć serwera RTMFP (Real Time Messaging Flow Protocol).


1

Jeśli to pytanie jest nadal w toku: znalazłem projekt o nazwie JNEXT i jest przykład używający UDP. Sam projekt wydaje się być wstrzymany, ale przynajmniej w Firefoksie działa (nie działa z Chrome i Opera). Może warto go poszukać.


3
Gdybym chciał, żeby użytkownik instalował oprogramowanie, mógłbym jeszcze lepiej wykorzystać Flash.

Flash nie zapewnia jednak UDP.
Brian DiCasa

-4

Myślę, że możesz wykorzystać technologię Silverliht 4. Możesz utworzyć aplikację Silverlight 4 do komunikacji z serwerem, a następnie umieścić ją na stronie html. Następnie Twój JavaScript może budować połączenia TCP za pośrednictwem aplikacji Silverlight 4!


Myślę, że jest to bardzo trudne dla aplikacji internetowej, która ma być używana tylko przez programistów Mac i iPhone. ^^ '

2
Ponadto Silverlight nie obsługuje „prawdziwego” UDP, tylko UDP typu multicast i działa tylko w sieci LAN.
Martin Ørding-Thomsen

2
Pytanie dotyczy UDP, a nie TCP
markmnl

-9

Możesz napisać serwer WebSocket, który będzie pełnił rolę proxy / mostu między TCP / UDP.


21
To zniweczyłoby cały cel UDP.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.