UDP를 사용하는 JavaScript WebSocket?


80

다른 사용자로부터 엄청난 양의 데이터를 받아야하는 JavaScript 애플리케이션을 작성 중입니다. 이 데이터 중 일부가 손실되는 경우에는 중요하지 않습니다. TCP 대신 UDP와 함께 JavaScript WebSocket을 사용하는 방법이 있습니까?


1
webRTC를 통해 수행 할 수 있습니다. geckosio.github.io 게임 서버는이 기술을 사용합니다.
Fost

답변:


52

아니요, JavaScript 내에서 UDP 통신을 할 수 없습니다. 죄송합니다.


2
@TimeMachine TCP 위에 구축 된 WebSocket이 아니라 초기 핸드 셰이크도 웹 서버에 의해 HTTP 업그레이드 요청으로 인식되도록 만들어집니다. 최신 초안에서 프로토콜에 대한 자세한 내용을 읽을 수 있습니다. tools.ietf.org/html/draft-abarth-thewebsocketprotocol-00
Ivo Wetzel

3
@IvoWetzel 왜 그렇게하지 않을까요? UDP Websocket을 안전하게 구현하는 몇 가지 방법을 생각할 수 있습니다.
Timmmm 2014

35
답변은 더 이상 최신이 아닙니다. WebRTC webrtc.org 는 브라우저에서 (실험적) UDP를 제공하고 nodejs는 서버의 udp 소켓에 액세스 할 수 있습니다.
Mirko

다음은 게임과 관련된 [이 문제에 대한 토론] [1]입니다. 거기서 그는 websockets, webrtc (UDP를위한 가능한 선택이지만 복잡함), quic (google chrome에서만 가능) 및 그의 [netcode.io] [2]를 다룹니다. [1] : gafferongames.com/post/... [2] : github.com/RedpointGames/netcode.io-browser
Diagon

node.js와 UDP / Datagram 소켓 연결! dgram 모듈은 UDP 데이터 그램 소켓의 구현을 제공합니다.
Derk Jan Speelman

57

표준 프로세스를 통해 작동하는 WebRTC 가 기다리고있는 것처럼 들립니다 . 다른 사람들이 지적했듯이 WebSocket은 HTTP 업그레이드로 시작된 결과 TCP를 통해 실행됩니다.


4
WebRTC는 거의 멋지게 보이지만 데이터 통신을 위해 RTCDataChannel을 사용해야하며 이는 신뢰할 수없는 전송 (게임에 필요)을 지원하지 않는 SCTP를 사용합니다. 편집 : 취소, 신뢰할 수없는 모드를 지원합니다. 여기에 좋은 기사
Timmmm 2014

그뿐 아니라 Peer 2 Peer도 권위주의적인 서버에게는 좋지 않습니다.
NiCk Newman

11
"동료"중 하나가 귀하의 서버가 될 수없는 이유는 없습니다.
Chad


4

WebSockets 프로토콜은 현재 정의 된 대로만 TCP를 사용합니다.

RTMFP (Real Time Messaging Flow Protocol) 서버를 사용하려는 경우 Flash로 UDP를 수행 할 수 있습니다.


1

이 질문이 아직 보류중인 경우 : JNEXT라는 프로젝트를 찾았고 UDP를 사용하는 예가 있습니다. 프로젝트 자체는 일시 중지 된 것처럼 보이지만 적어도 Firefox에서는 작동합니다 (Chrome 및 Opera에서는 작동하지 않음). 그것을 찾는 것이 가치가있을 수 있습니다.


3
사용자가 소프트웨어를 설치하기를 원한다면 Flash를 더 잘 사용할 수 있습니다.

플래시는 UDP를 제공하지 않습니다.
Brian DiCasa 2011-06-15

-4

Silverliht 4 기술을 활용할 수 있다고 생각합니다. Silverlight 4 응용 프로그램을 만들어 서버와 통신 한 다음이를 html 페이지에 포함 할 수 있습니다. 그러면 JavaScript가 Silverlight 4 응용 프로그램을 통해 TCP 연결을 구축 할 수 있습니다!


Mac과 iPhone 개발자 만 사용할 수있는 웹 앱은 매우 어렵다고 생각합니다. ^^ '

2
또한 Silverlight는 "실제"UDP를 지원하지 않고 멀티 캐스트 UDP 만 지원하며 LAN에서만 작동합니다.
Martin Ørding-Thomsen 2011

2
질문은 TCP가 아닌 UDP에 대한 것입니다
markmnl

-9

TCP / UDP간에 프록시 / 브리지 역할을하는 WebSocket 서버를 작성할 수 있습니다.


21
그것은 UDP의 전체 목적을 무너 뜨릴 것입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.