Netty websocket优雅地关闭

时间:2016-11-08 11:26:43

标签: android websocket netty

我需要让我的websocket优雅地关闭。首先发送所有在缓冲区中等待然后关闭的消息。

channel.flush();
channel.close();

似乎不对,因为我没有任何flush方法的完成处理程序在完成后关闭。

有没有办法做到这一点。 使用的Netty:4.1.0.Beta3

1 个答案:

答案 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