2

ドキュメントはどこにでもあるので、できるだけ早く複数のメッセージを送信する最善の方法を知りたいです。

たとえば、1 つのサーバーからメッセージを受信する 300 台のデバイスがある場合、1 つの大きなメッセージを送信し、デバイスに必要な部分を選択させるか、300 個のメッセージを 1/300 のサイズで送信させる方がよいでしょう。それらは小さな刺し傷にすぎないため、300 台のデバイスはそれぞれ 6 バイトしか取得できません。

違いはありますか?

ありがとうございます。

4

1 に答える 1

1

ソケットのNagleアルゴリズムが有効になっている場合、特定の接続を介して複数の小さなメッセージを送信することは、同じ接続を介してより少ない大きなメッセージを送信するよりも一般的に遅くなります。Nagleはアウトバウンドデータを内部でバッファリングし、効率的なメッセージを送信できるように、十分なデータがバッファリングおよび/またはタイムアウトするまで待機する必要があります。一般的なソケットの使用では、Nagleを有効にすることをお勧めします。これは、ほとんどのアプリで許容できる速度、パフォーマンス、およびオーバーヘッドのバランスが取れているためです。ただし、時間に敏感なメッセージを送信する必要がある場合は、通常、Nagleを無効にして、すべてのメッセージができるだけ早く個別に送信されるようにする必要があります。

ただし、単一のメッセージを複数のデバイスに送信することについて説明することは、TCPでは不可能です。おそらく、デバイスはそれぞれ、サーバーと直接接続する独自のTCP接続を持っています。300の接続すべてに単一のメッセージを送信するには、接続ごとに1つずつ、メッセージの300の独立したコピーを作成する必要があります。TCPにはブロードキャスト機能がありません(必要に応じてUDPまたはマルチキャストに切り替えてください)。単一のサーバーメッセージを送信して300台のデバイスに応答させる唯一の方法は、デバイスがサーバーに直接接続しておらず、代わりにサーバーへの単一の接続を維持し、受信したサーバーメッセージをそれぞれに転送するプロキシを介して通信している場合です。必要に応じてデバイス。

于 2012-03-11T01:21:31.600 に答える