gpt4 book ai didi

java - Netty中客户端(浏览器)退出时如何从管道中删除 channel ?

转载 作者:太空宇宙 更新时间:2023-11-04 14:38:09 25 4
gpt4 key购买 nike

许多客户端(浏览器)可以通过 websockets 连接到我的服务器(netty-server)。我想要的是,每当客户端关闭选项卡(他连接到我的服务器的 url)时,与他关联的 channel 也应该被取消注册。但这不会自动发生,因为我已经创建了一个哈希集并添加了客户端 ip 到channelRegistered(..)方法中的哈希集,并从channelUnregistered(..)方法中的哈希集中删除ip。但它并没有被删除。请告诉我是否有其他方法可以在客户端退出浏览器(或他所连接的选项卡)时取消注册 channel 。谢谢。

最佳答案

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

您应该使用channelActive()channelInactive()为了你想要它们的目的。当 channel 处于 Activity 发送状态时,ChannelActive 被触发,对于服务器,这通常在 channelRegistered 之后直接发生,对于客户端,它在建立套接字连接后发生。当在本地套接字上调用 close() 时,或者远程端关闭/终止连接时,会调用 channelInactive(),您可以依靠此方法来执行本地操作清理。

关于java - Netty中客户端(浏览器)退出时如何从管道中删除 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com