Netty SimpleChannelInboundHandler关闭通道

时间:2014-05-25 19:31:30

标签: java websocket netty

我有扩展SimpleChannelInboundHandler的处理程序。我用它来处理websocket框架。 检测该连接的最佳方法是从客户端关闭(浏览器关闭或网络连接崩溃)? 我看到ChannelInboundHandlerAdapter中有两种方法:channelUnregistered和channelInactive。我可以用它来检测通道关闭吗?

3 个答案:

答案 0 :(得分:5)

您应该使用channelInactive(),当频道无法再进行通信时会触发该channelUnregistered()channelUnregistered()具有不同的含义,但channelInactive()始终触发{{1}}。

答案 1 :(得分:0)

如果连接尝试失败,也会调用

channelUnregistered()。所以channelInactive()似乎是听取连接关闭事件的更好选择。

我在实施重新连接策略时看到了这一点,其中关闭的连接会触发重新连接。 channelUnregistered()是我的第一选择,显然是错误的,因为它会在每次重新连接后重新启动重新连接,无休止地。

顺便说一句:我还测试了websocket连接。

答案 2 :(得分:-1)

使用netty 4我使用channelUnregistered

也许您担心日志上的警告,我解决了它更改日志级别,因为它已经由方法处理但总是出现

<logger name="io.netty" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="console" />
</logger>