我需要使我的websocket优雅地关闭。首先发送缓冲区中等待的所有消息,然后关闭。
channel.flush();
channel.close();
似乎不正确,因为我没有任何完成处理程序flush方法做关闭后完成。
有办法做到这一点吗?使用版本:4.1.0.Beta3
可以使用的技巧是writeAndFlush一个空缓冲区,然后为该调用附加一个侦听器。未共享。EMPTY_BUFFER可以使这非常简单。
channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(...
channel.close();
)};
如果你想做的只是在刷新后关闭通道,那么你可以使用ChannelFutureListener。CLOSE来简化代码。
channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
如果您经常这样做,那么您可能希望编写一个静态助手方法,就像Netty示例所做的那样。