2

WebSocket 経由で 500KB ~ 1MB のデータをクライアントに送信する必要がある場合があります。そのため、クライアントがどれだけのデータを受信したかの進行状況を追跡できるかどうか疑問に思っていました。そうすれば、低速の接続を介して接続するときに、アプリケーションが応答していないように見えません。

4

1 に答える 1

3

これを行う組み込みの方法はありません。(つまり、websocket プロトコルではメッセージのフラグメント化が可能ですが、Javascript の websocket API を使用するクライアントはこれにアクセスできず、ブラウザーがすべてのメッセージ フラグメントを受信し、それらのコンテンツを 1 つのバッファーに結合したときにのみ通知されます)。

ただし、1 つの大きなメッセージをいくつかの小さなメッセージに分割することで、アプリケーション コードの進行状況を示すことができます。

これを行う場合、独自の単純なプロトコルも定義する必要があります。少なくとも、これは、後続のメッセージを結合して x バイトまで追加することをクライアントに通知する最初のメッセージである可能性があります。または、事前にデータのサイズがわからない場合は、最終的なデータ転送に続く 2 番目のメッセージで、断片化されたメッセージの終わりを示します。

于 2013-01-21T09:01:59.043 に答える