2015-12-27 37 views
12

私は私が取り組んでいるゲームを持っており、リアルタイムゲームではUDPが優れていると聞いています。私はsocket.ioがTCPを使用していることを知っていて、それをUDPに切り替える何らかの方法があるのか​​疑問に思っていました。私はそれを見てみましたが、UDPはブラウザーでのみ実験的だと述べた2012年頃の記事を見つけました。socket.ioでUDPを使用することはできますか?

答えて

11

いいえ、できません。

socket.ioは、webSocketトランスポートを使用します。 webSocketはTCP接続であり、UDP接続ではありません。だからsocket.ioはUDPを使用せず、TCPを使用します。

私が知る限り、通常のHTMLページJavascriptからアクセス可能なブラウザには標準UDPサポートはありません。トピックの

その他の参考文献:

Why Can't I Send UDP Packets From a Browser

Reading from udp port in browser

Chrome Supports TCP and UDP Sockets

Write a chrome extension to support UDP in browser

How to send a UDP Packet with Web RTC - Javascript?

How to talk to UDP sockets with HTML5?

Reading from udp port in browser

UDPを使用すると、パケットはできるだけ早く配信されるようにしたいとき、いくつかの状況のた​​めに望ましい輸送することが、それはすぐに配信できない場合は、それをドロップすることができます。これはゲームやビデオストリーミングでも役に立ちます。次のパケットには次回の更新が含まれているため、前回のパケットが届かなかった場合には大きな問題はなく、TCPには失われたパケットを再送しようとはしません。しかし、ブラウザは、WebページのJavascriptからのUDPプロトコルの使用をサポートしていません。

+0

なぜ別のdownvoteですか?ダウンウォーターズ、説明してください。正当な牛肉があれば、私は答えを修正します。ブラウザのSocket.ioはUDPでは実行されません。これは、ブラウザがあらゆる種類のUDP転送をサポートしていないため、存在しません。あなたがラマザンの答えによって誤解されているためにダウン投票している場合、その答えは非常に誤解を招くものであり、この質問が何を求めているかを提示していないので、その答えの下のコメントを読んでください。 – jfriend00

3

質問にはすでに答えがありますが、私はUDPでsocket.ioを実装する方法があることを指摘したいと思います。たとえばdgramはあなたが探しているものを正確に表します。

This is socket.io + UDPとdgramのチュートリアル。

UPDATE

Alexandre Lachezeは、ブラウザにUDPをもたらすNode.jsのpackageを開発しました。また、socket.ioもサポートしています。だから答えは何とか今は時代遅れです。

+1

私はあなたがここに記載されているものについて混乱するかもしれないと思う。最初の参照は完全にnode.jsで実行され、ブラウザでは実行されません。これは、node.jsへのUDPサポートbulitのサンプルコードです。したがって、これはブラウザのUDPとは関係ありません。あなたの2番目のリファレンスは、UDPのようなインターフェイスをシミュレートしていますが、webSocketまたはsocket.ioトランスポート(どちらもTCP接続)で実行しています。つまり、ブラウザで動作するシミュレートされたUDPインターフェイスですが、実際のトランスポートはUDPではなくTCPです。したがって、どちらもブラウザで実際のUDPプロトコルを実行していません。 – jfriend00

+1

2番目の例は、このシミュレーションされたUDPを実際のUDPに変換するサーバベースのプロキシとともに使用すると、ブラウザからUDPサービスと通信するために使用できますが、ブラウザーでUDPを使用しているため、応答性があり、低遅延のゲームにUDPを使用するのが一般的です。それは賢明であり、いくつかの興味深い用途があるかもしれませんが、この質問がUDP上でsocket.ioを実行する方法であるかどうかは分かりません。参考までに、2番目のオプションのインターフェースの名前は、シミュレートされたUDPのSimUDPです。 – jfriend00

+0

だから要約すると。あなたの答えの中には、UDPの上で走っているsocket.ioの実装が示されているので、答えの一部が完全にサポートされていないだけです。また、Alexandre LachezeのパッケージがブラウザにUDPを提供するというあなたの主張も間違っています。これは、実際にTCPを介してブラウザに実行されているシミュレートされたUDPのようなインターフェイスをもたらします。 – jfriend00

関連する問題