ios - Netty Channel 关闭检测

标签 ios timeout protocols netty

我正在使用 netty 和 ios 构建一个服务器客户端应用程序,当用户刚刚关闭他/她的 ios 设备上的 WiFi 时,我遇到了一个问题,netty 服务器不知道它。 服务器需要知道为该用户做清理并将他/她设置为离线,但现在当用户尝试再次连接时,服务器只是告诉他他/她已经在线。

最佳答案

如果我正确理解你的问题:你想在服务器端监听客户端 channel 关闭事件并做一些 session 清理,

Netty 中监听 channel 关闭事件的方式有两种:

1) 如果您的服务器处理程序扩展SimpleChannelHandler/SimpleChannelHandler,那么您可以覆盖以下方法并在那里编写您的 session 清理逻辑

public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception;

2) 如果您只能访问 channel 引用,那么您可以在不久的将来获得 channel 并使用您的 session 清理逻辑注册您的 ChannelFutureListener 实现,

ChannelFuture closeFuture = channel.closeFuture();

closeFuture.addListener(new ChannelFutureListener() {
    @Override
    public void operationComplete(ChannelFuture future) throws Exception {
        //session cleanup logic
    }
});

关于ios - Netty Channel 关闭检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785949/

相关文章:

ios - 如何用弹出窗口样式显示 UISplitViewController 的主视图?

javascript - 使用 HttpInterceptor 的 Angular 1.5 超时

unit-testing - Diffie-Hellman 检验向量

ios - 类不符合 NSItemProviderWriting 协议(protocol) - Objective-C

ios - 图像不是第一次加载到 iOS 10 的 tableview 中,而是滚动后?

ios - 线程 1 EXC_BREAKPOINT(代码=1,子代码=0x101959bfc)Swift

ios - 是否可以在真正的 ios 设备中创建本地文件夹?

sockets - JMeter:java.net.SocketException:连接重置

MySQL 非常长的查询

sockets - 通过 Web 套接字进行通信的协议(protocol)