JavaScript WebSockets з UDP?


80

Я пишу додаток JavaScript, який повинен отримувати величезну кількість даних від інших користувачів. Не важливо, якщо частина цих даних загубиться. Чи є якийсь спосіб використання JavaScript WebSockets з UDP замість TCP?


1
Це можна зробити через webRTC. Ігровий сервер geckosio.github.io використовує цю техніку.
Фост

Відповіді:


52

Ні, неможливо мати UDP-зв'язок у JavaScript. Вибачте.


2
@TimeMachine Вони не збираються WebSockets, побудованих поверх TCP, початкове рукостискання також робиться так, що веб-сервери розпізнають його як запит на оновлення HTTP. Детальніше про протокол ви можете прочитати в останньому проекті: tools.ietf.org/html/draft-abarth-thewebsocketprotocol-00
Іво Ветцель,

3
@IvoWetzel Чому це означає, що вони не будуть? Я можу придумати кілька способів безпечної реалізації UDP Websockets.
Timmmm,

35
Відповідь вже не актуальна: WebRTC webrtc.org пропонує (експериментальний) UDP у браузері, а nodejs може отримати доступ до сокетів udp на сервері.
Мірко

Ось [обговорення цього питання] [1] стосовно ігор. Там він охоплює веб-сокети, webrtc (можливий вибір для UDP, але складний), quic (лише в google chrome) та його [netcode.io] [2]. [1]: gafferongames.com/post/… [2]: github.com/RedpointGames/netcode.io-browser
Діагон

Підключення UDP / Datagram Sockets до node.js! Модуль dgram забезпечує реалізацію сокетів UDP Datagram.
Дерк Ян Шпельман

57

Здається, те, чого ви чекаєте, - це WebRTC, який працює на своєму шляху через стандартний процес. Як зазначають інші люди, WebSockets перебігають TCP в результаті ініціювання оновлення HTTP.


4
WebRTC виглядає майже чудово, але, наскільки я можу сказати, вам потрібно використовувати RTCDataChannel для передачі даних, а також використовує SCTP, який не підтримує ненадійні доставки (необхідні для ігор). Редагувати: скасувати це, він підтримує ненадійний режим. Хороша стаття тут
Тімммм

Мало того, це Peer 2 Peer, що не підходить для авторитарного сервера.
NiCk Newman

11
Немає жодної причини, що хтось із "однолітків" не може бути вашим сервером.
Чад,

6

Здається, питання призначене для клієнтського UDP, але оскільки я опинився тут ...

Ви можете зробити UDP в JavaScript на сервері з допомогою Node.js dgramпакета .


4

Протокол WebSockets має лише протокол TCP, як визначено в даний час.

Ви можете зробити UDP із Flash, якщо бажаєте використовувати сервер RTMFP (протокол обміну повідомленнями в режимі реального часу).


1

Якщо це питання все ще знаходиться на розгляді: я знайшов проект під назвою JNEXT, і є приклад використання UDP. Здається, сам проект призупинений, але принаймні у Firefox він працює (він не працює з Chrome та Opera). Можливо, варто його шукати.


3
Якби я хотів, щоб користувач встановив програмне забезпечення, я міг би ще краще використовувати Flash.

Однак Flash не дає вам UDP.
Brian DiCasa

-4

Я думаю, ви можете використовувати технологію Silverliht 4. Ви можете створити додаток Silverlight 4 для спілкування з сервером, а потім додати його на сторінку html. Тоді ваш JavaScript може будувати TCP-з'єднання через додаток Silverlight 4!


Я думаю, що це дуже важко для веб-програми, якою повинні користуватися лише розробники Mac та iPhone. ^^ '

2
Крім того, Silverlight не підтримує "справжній" UDP, лише багатоадресний UDP, який працює лише в локальній мережі.
Martin Ørding-Thomsen

2
Питання стосується UDP, а не TCP
markmnl

-9

Ви можете написати сервер WebSocket, який служитиме проксі / мостом між TCP / UDP.


21
Це перемогло б цілі UDP.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.