我需要让我的websocket优雅地关闭。首先发送所有在缓冲区中等待然后关闭的消息。
channel.flush();
channel.close();
似乎不对,因为我没有任何flush方法的完成处理程序在完成后关闭。
有没有办法做到这一点。 使用的Netty:4.1.0.Beta3
答案 0 :(得分:2)
你可以使用的技巧是writeAndFlush一个空缓冲区,然后将一个监听器附加到该调用。 Unpooled.EMPTY_BUFFER可以让这很容易。
channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(...
channel.close();
)};
如果您想要做的就是在刷新后关闭频道,那么您可以使用ChannelFutureListener.CLOSE来简化代码。
channel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
如果你经常这样做,那么你可能想要编写一个静态辅助方法like the Netty examples do。