当客户端(浏览器)退出netty时,如何从管道中删除通道



许多客户端(浏览器)可以通过websockets连接到我的服务器(netty-server)。我想要的是,每当客户端关闭选项卡(他连接到我的服务器上的url),那么与他相关联的通道也应该得到注销。但这不会自动发生,因为我已经创建了一个哈希集,并将客户端ip添加到channelRegistered(..)方法中的哈希集中,并从channelUnregistered(..)方法中删除了ip。但它不会被移除。请让我知道,如果有另一种方式取消注册通道每当客户端退出浏览器(或由他连接的选项卡)。谢谢。

channelRegistered()channelUnregistered()是用于此目的的错误方法。这些方法的目的是在处理程序本身从通道管道中添加/删除时进行注册。当调用注册时,不会调用取消注册,因为管道在通道关闭后仍然存在。

您应该根据需要使用channelActive()channelInactive()ChannelActive在通道处于活动状态时触发,对于服务器来说,这通常在channelRegistered之后直接发生,而对于客户端来说,它在套接字连接建立之后发生。当close()在本地套接字上被调用时,channelInactive()被调用,或者远程端关闭/终止了连接,您可以指望这个方法来做本地清理。

最新更新