私は私が取り組んでいるゲームを持っており、リアルタイムゲームではUDPが優れていると聞いています。私はsocket.ioがTCPを使用していることを知っていて、それをUDPに切り替える何らかの方法があるのか疑問に思っていました。私はそれを見てみましたが、UDPはブラウザーでのみ実験的だと述べた2012年頃の記事を見つけました。socket.ioでUDPを使用することはできますか?
答えて
いいえ、できません。
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プロトコルの使用をサポートしていません。
質問にはすでに答えがありますが、私はUDPでsocket.ioを実装する方法があることを指摘したいと思います。たとえばdgramはあなたが探しているものを正確に表します。
This is socket.io + UDPとdgramのチュートリアル。
UPDATE:
Alexandre Lachezeは、ブラウザにUDPをもたらすNode.jsのpackageを開発しました。また、socket.ioもサポートしています。だから答えは何とか今は時代遅れです。
私はあなたがここに記載されているものについて混乱するかもしれないと思う。最初の参照は完全にnode.jsで実行され、ブラウザでは実行されません。これは、node.jsへのUDPサポートbulitのサンプルコードです。したがって、これはブラウザのUDPとは関係ありません。あなたの2番目のリファレンスは、UDPのようなインターフェイスをシミュレートしていますが、webSocketまたはsocket.ioトランスポート(どちらもTCP接続)で実行しています。つまり、ブラウザで動作するシミュレートされたUDPインターフェイスですが、実際のトランスポートはUDPではなくTCPです。したがって、どちらもブラウザで実際のUDPプロトコルを実行していません。 – jfriend00
2番目の例は、このシミュレーションされたUDPを実際のUDPに変換するサーバベースのプロキシとともに使用すると、ブラウザからUDPサービスと通信するために使用できますが、ブラウザーでUDPを使用しているため、応答性があり、低遅延のゲームにUDPを使用するのが一般的です。それは賢明であり、いくつかの興味深い用途があるかもしれませんが、この質問がUDP上でsocket.ioを実行する方法であるかどうかは分かりません。参考までに、2番目のオプションのインターフェースの名前は、シミュレートされたUDPのSimUDPです。 – jfriend00
だから要約すると。あなたの答えの中には、UDPの上で走っているsocket.ioの実装が示されているので、答えの一部が完全にサポートされていないだけです。また、Alexandre LachezeのパッケージがブラウザにUDPを提供するというあなたの主張も間違っています。これは、実際にTCPを介してブラウザに実行されているシミュレートされたUDPのようなインターフェイスをもたらします。 – jfriend00
- 1. Flash/ActionScriptでUDPを使用することはできますか?
- 2. WebRTCを使用してUDP接続を開くことはできますか?
- 3. TCPとUDPで同じsockaddr_inを使用できますか?
- 4. IE 9でsocket.io-clientを使用することは可能ですか?
- 5. クライアントでwebsocketを、サーバーでsocket.ioを使用できますか?
- 6. UDP経由でQVectorを交換することはできますか?
- 7. Android上でノードjs socket.io Serverを実行することはできますか?
- 8. このコードでudp serverとudp clientを接続できませんか?
- 9. 誰かがsocket.io-redisを使用する必要がある状況の例を提供することはできますか? socket.ioドキュメントから
- 10. UDPを使用したマルチプレイヤーゲーム:どのようにプレイヤーはお互いを知ることができますか?
- 11. 私のExpressJSウェブサイトとsocket.ioポートは同じポートを使用できますか?
- 12. リストを使用することはできますがIListを使用することはできません。
- 13. モデルでcancanを使用することはできますか?
- 14. jQueryをjavaScriptで使用することはできますか?
- 15. キャッスルウィンザーでスコープライフスタイルを使用することはできますか?
- 16. MVVMでユーザーコントロールを使用することはできますか?
- 17. Railsで「フロントコントローラ」を使用することはできますか?
- 18. スイッチケースでmod_rewriteを使用することはできますか
- 19. GAEでGWTPを使用することはできますか?
- 20. no_stdでBoxを使用することはできますか?
- 21. AndroidでGTK +を使用することはできますか?
- 22. JBossでflashvarsを使用することはできますか?
- 23. sqlalchemyでmongodbを使用することはできますか?
- 24. SWTでクラッタを使用することはできますか?
- 25. OCamlでパイプを使用することはできますか?
- 26. vprintfでarray_mapを使用することはできますか?
- 27. jettyでsocket.io.jsを使用することはできますか?
- 28. ROSをDjangoで使用することはできますか?
- 29. GMSPolygonをMKMapViewで使用することはできますか?
- 30. .clickでe.whichを使用することはできますか?
なぜ別のdownvoteですか?ダウンウォーターズ、説明してください。正当な牛肉があれば、私は答えを修正します。ブラウザのSocket.ioはUDPでは実行されません。これは、ブラウザがあらゆる種類のUDP転送をサポートしていないため、存在しません。あなたがラマザンの答えによって誤解されているためにダウン投票している場合、その答えは非常に誤解を招くものであり、この質問が何を求めているかを提示していないので、その答えの下のコメントを読んでください。 – jfriend00