1

Nettyを使用してサーバー/クライアントアプリケーションを実装したい。例として、ファイルをアップロードおよびダウンロードし、新しいファイルがアップロードされたときに通知を受信する必要があるとします。問題は、ファイルをダウンロード(またはアップロード)しているときでも、クライアントが通知を受信する必要があることです。私はいくつかのオプションを見ることができます:

  1. URLを含む小さなメッセージのみをTCP経由でファイルに送信し、HTTP経由でダウンロードおよびアップロードします。

  2. 小さいメッセージ用に1つ、大きいメッセージ用に1つ(または大きいメッセージごとに1つ)を使用して、TCPを介して複数の並列接続を開きます。

  3. メッセージを64Kb(例)未満のチャンクに自動的に分割し、異なるメッセージのチャンクをインターリーブできるようにするチャンクハンドラーを記述します。ドキュメントから、それはこれを行わないChunkedWriteHandlerようです。

オプション3で私が気に入っているのは、クライアントが1回だけ認証する必要があること、別の接続が維持されている間に1つの接続が切断される可能性がないことなどです。しかし、それは合理的ですか?もしそうなら、そのような解決策はすでに存在しますか?

4

2 に答える 2

1

チャンクはhttpメッセージに他なりません。バッファリングするソケットクライアントを使用して、1つの接続でチャンクごとにファイルをnettyチャンクに書き込み、nettyhttpチャンクアグリゲーターハンドラーを使用してチャンクをデコードしてください。クライアントの実装は非常に簡単です。サーバー側の実装のほとんどは、org.jboss.netty.example.http.uploadにあります。

于 2012-09-18T06:08:05.863 に答える
0

クライアントとサーバーの両方を制御できる場合は、WebSocketを使用してください。通知などを含め、その上に独自のファイル転送プロトコルを自由に考案できます。カーミットはWebSocketに移行します;-)

于 2012-09-19T22:13:45.660 に答える