Netty チャネルを使用する TCP ベースのサーバー/クライアント モデルではChannel.write()
、サーバーからの数とChannel.messageReceived()
受信クライアントの対応する数の間に何らかの対応がありますか? writes()
送信側で10 を実行するmessageReceived()
と、リッスンしているクライアントで が 10 回呼び出されるということですか? または Netty は、(write()
送信側の から) 送信されたデータを、クライアント側の多かれ少なかれ数のmessageReceived()
イベントに集約できますか? Netty でこの動作を構成する方法はありますか?
質問する
659 次
2 に答える
1
Channel.write(..) および messageReceived 呼び出しに対して 1:1 のマッピングがあることは保証されていません。サーバー上の ChannelPipeline の次の ChannelHandlers にメッセージをディスパッチするのに十分なデータを受信するまで ChannelBuffer をバッファリングする FrameDecoder サブクラスを使用する必要があります (独自に作成することもできます)。
Netty には、DelimiterBasedFrameDecoder (たとえば) など、すぐに使用できる FrameDecoder 実装がいくつか付属しています。これは、Delimiter を受け取るまでデータをバッファリングし、ChannelPipeline の次のハンドラーにディスパッチします。
詳細については、[1] を参照してください。
[1] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/frame/FrameDecoder.html
于 2012-04-13T05:48:47.433 に答える
0
はい、これを行う方法はありますが、他のことを行うにはさらに多くの情報を提供する必要があります。
于 2012-04-12T22:25:15.720 に答える