私はNetty Guideを読みましたが、ChannelFutureについてはあまり説明しません。 ChannelFutureは複雑なアイディアですNetty ChannelFutureの仕組みは?
私がしようとしているのは、初期応答後に文脈にメッセージを書き込むことです。一般的な要求/応答フローとは異なります。リクエスト送信
- クライアント - >サーバー(網状)
- Serverはctx.writeAndFlush(MSG)との応答を送信する;:私はこのような流れを必要とします
- ステップ2が完了したら、サーバはそのctxにさらにメッセージを送信します。
問題は、私はこのような何かを行う場合は、第2の書き込みは送信しないことである。
ctx.writeAndFlush(response);
Message newMsg = createMessage();
ctx.writeAndFlush(newMsg); //will not send to client
それから私はChannelFutureを使用しようと、それは動作しますが、私は私があればわかりません論理的に正しい:
ChannelFuture msgIsSent = ctx.writeAndFlush(response);
if(msgIsSent.isDone())
{
Message newMsg = createMessage();
ctx.writeAndFlush(newMsg); //this works
}
代わりにChannelFutureListener()を使用する必要がありますか?
ChannelFuture msgIsSent = ctx.writeAndFlush(response);
msgIsSent.addListener(new ChannelFutureListener(){
@Override
public void operationComplete(ChannelFuture future)
{
Message newMsg = createMessage();
ctx.writeAndFlush(newMsg);
}
});
これはこれでもかかりますか?
どちらがベストプラクティスアプローチですか?方法2を使用すると潜在的な問題はありますか?