我有扩展SimpleChannelInboundHandler的处理程序。我用它来处理websocket框架。 什么是最好的方式来检测从客户端关闭连接(浏览器关闭或网络连接崩溃)? 我看到ChannelInboundHandlerAdapter中有两个方法:channelUnregistered和channelInactive。我可以将其用于检测通道关闭吗?Netty SimpleChannelInboundHandler关闭通道
3
A
回答
5
您应该使用channelInactive()
,当频道不能再进行通信时触发。 channelUnregistered()
有不同的含义,尽管channelUnregistered()
总是在channelInactive()
之后触发。
-1
与网状4我使用channelUnregistered
也许你担心在日志中的警告,我解决它改变日志级别,因为它已经通过该方法处理,但总是出现
<logger name="io.netty" additivity="false">
<level value="ERROR" />
<appender-ref ref="console" />
</logger>
0
channelUnregistered()
也被称为在连接尝试失败的情况下。因此channelInactive()
似乎是听取连接关闭事件的更好选择。
我刚刚在实现重新连接策略时看到了这一点,关闭连接会触发重新连接。 channelUnregistered()
是我的第一选择,显然是错误的,因为它会在每次重新连接后重新触发重新连接,无休止地。
顺便说一句:我还测试了websocket连接。
相关问题
- 1. Netty不关闭频道
- 2. Netty - 频道立即关闭
- 3. Netty频道随机关闭
- 4. Netty的通道封闭检测
- 5. Netty - 是否关闭客户端的套接字关闭服务器的通道
- 6. Netty打开/关闭“zumbi”连接(通道)的问题
- 7. 可以netty可靠地检测通道关闭/断开?
- 8. Netty ClientBootstrap SSL握手终止 - 通道/ ClientBootstrap关闭?
- 9. MassTransit - 通道关闭
- 10. 关闭golang通道
- 11. paramiko.SSHException:通道关闭
- 12. 关闭Netty服务器
- 13. Netty websocket优雅地关闭
- 14. Netty:连接两个通道
- 15. 的Netty 4.0通道本地
- 16. netty SimpleChannelInboundHandler消息接收只能达到16384
- 17. 在Netty 4.0.4.Final中使用SimpleChannelInboundHandler不再工作
- 18. 如何在Netty握手之前优雅地关闭频道?
- 19. Netty - 调用channel.disconnect()实际上关闭了频道
- 20. 通过java代码关闭MQ通道
- 21. 关闭频道
- 22. 在Netty 4.1中,关闭服务器上的通道后,管道中的处理程序何时被删除?
- 23. 的Netty服务器关闭异常
- 24. 如何关闭与netty的连接CorsHandler
- 25. Netty:停止重新连接和关闭
- 26. 关闭一个Netty UDP服务器
- 27. 异步关闭套接字通道
- 28. 关闭非阻塞套接字通道
- 29. 如何关闭webrtc数据通道?
- 30. JSch:通道从未关闭或EOF
我在我的处理程序中覆盖了channelUnregistered和channelInactive。而且他们都不会被触发。可能是什么原因? –
@ismailyavuz可能是因为放置在处理程序之前的一个处理程序没有通过调用'ctx.fireChannelInactive()'或'ctx.fireChannelUnregistered()'来转发该事件? – trustin
我只有这4个在我的initChannel中添加管道。 1)DelimiterBasedFrameDecoder作为成帧器,2)StringDecoder作为解码器3)StringEncoder作为编码器4)我自己的处理程序,它扩展SimpleChannelInboundHandler @trustin –