UDPを使用したJavaScriptWebSocket?


80

他のユーザーから大量のデータを受信する必要があるJavaScriptアプリケーションを作成しています。このデータの一部が失われたとしても重要ではありません。TCPの代わりにUDPでJavaScriptWebSocketを使用する方法はありますか?


1
これはwebRTCを介して実行できます。geckosio.github.ioゲームサーバーはこの手法を使用します。
fost 2010

回答:


52

いいえ、JavaScript内でUDP通信を行うことはできません。ごめんなさい。


2
@TimeMachine TCP上に構築されたWebSocketはありません。最初のハンドシェイクも行われるため、WebサーバーによってHTTPアップグレード要求として認識されます。プロトコルの詳細については、最新のドラフトをご覧ください
Ivo Wetzel

3
@IvoWetzelなぜそうしないのですか?UDPWebsocketを安全に実装する方法はいくつか考えられます。
Timmmm 2014

35
回答はもう最新ではありません。WebRTCwebrtc.orgはブラウザーで(実験的な)UDPを提供し、nodejsはサーバー上のudpソケットにアクセスできます。
ミルコ

これがゲームに関連する[この問題の議論] [1]です。そこで彼は、websocket、webrtc(UDPの可能な選択肢ですが、複雑です)、quic(google chromeのみ)、および彼の[netcode.io] [2]について説明しています。[1]:gafferongames.com/post/… [2]:github.com/RedpointGames/netcode.io-browser
ダイアゴン

node.jsとのUDP /データグラムソケット接続!dgramモジュールは、UDPデータグラムソケットの実装を提供します。
Derk JanSpeelman20年

57

あなたが待っているのは、標準化プロセスを順調に進んでいるWebRTCのようです。他の人が指摘しているように、WebSocketは、HTTPアップグレードを開始した結果としてTCP上で実行されます。


4
WebRTCはほとんど見栄えがしますが、私が知る限り、データ通信にはRTCDataChannelを使用する必要があり、信頼性の低い配信(ゲームに必要)をサポートしないSCTPを使用します。編集:それをキャンセルします、それは信頼できないモードをサポートします。ここに良い記事
Timmmm 2014

それだけでなく、それはPeer 2 Peerであり、権威主義的なサーバーには適していません。
NiCk Newman 2015

11
「ピア」の1つがサーバーになれない理由はありません。
チャド


4

WebSocketsプロトコルは、現在定義されているようにTCP経由でのみ実行されます。

RTMFP(Real Time Messaging Flow Protocol)サーバーを使用する場合は、Flashを使用してUDPを実行できます。


1

この質問がまだ保留中の場合:JNEXTというプロジェクトを見つけましたが、UDPを使用した例があります。プロジェクト自体は一時停止しているようですが、少なくともFirefoxでは機能します(ChromeとOperaでは機能しません)。それを探す価値があるかもしれません。


3
ユーザーにソフトウェアをインストールしてもらいたい場合は、Flashを使用する方がよいでしょう。

ただし、FlashはUDPを提供しません。
Brian DiCasa 2011年

-4

Silverliht4テクノロジーを活用できると思います。サーバーと通信するSilverlight4アプリケーションを作成し、それをhtmlページに埋め込むことができます。次に、JavaScriptはSilverlight4アプリケーションを介してTCP接続を構築できます。


MacとiPhoneの開発者だけが使うWebアプリにとって、それは非常に難しいことだと思います。^^ '

2
また、Silverlightは「実際の」UDPをサポートせず、マルチキャストUDPのみをサポートし、LAN上でのみ機能します。
–MartinØrding-Thomsen 2011

2
問題はTCPではなくUDPに関するものです
markmnl 2012年

-9

TCP / UDP間のプロキシ/ブリッジとして機能するWebSocketサーバーを作成できます。


21
それはUDPの目的全体を無効にするでしょう。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.