我有擴展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 –