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