2

socket.io を使用すると、2 つのオプションがあります。次のような多くの小さなパケットを送信できます。

socket.emit("data",{515:{x:5,y:6}})
socket.emit("data",{124:{x:3,y:2}})
socket.emit("data",{415:{x:1,y:2}})
socket.emit("data",{135:{x:5,y:1}})

または、1 つの大きなパケットを送信できます。

socket.emit("data",{515:{x:5,y:6},124:{x:3,y:2},415:{x:1,y:2},135:{x:5,y:1}})

これらのパケットが 1 秒あたり数回送信され、ping に敏感なアプリケーションのサーバーの帯域幅使用量の大部分で構成されていることを考えると、両方のアプローチに違いはありますか?

4

1 に答える 1

2

次のリンクは、パケットのライフサイクルを説明するのに適していると思います。

http://www.sdsusa.com/connections/

明らかな要点は、複数のパケットを送信するのとは対照的に、1 つのパケットですべての状態 (接続、確認、確立、送信など) が 1 回発生することです。これらの状態は、パケットごとに 1 回発生する必要があります。より多くのパケットを作成すると、より多くの接続が確立されるため、送受信時間が長くなり、パケットがドロップされて接続が失われる可能性が高くなり、追加の遅延が発生する可能性があります。

ほとんどの場合、違いはおそらく数ミリ秒で目立たないため、どちらのアプローチを使用しても問題ありません。そうは言っても、多くのクライアントから多くのパケットがある場合、1 秒間に 30 または 40 パケットを処理しようとすると、サーバーがフラッディングする可能性があります。さらに、パケットが到着する順序について保証がないため、順序を気にする場合、多くのパケットはお勧めできません。

于 2013-06-30T05:59:01.740 に答える