我建立使用网状和iOS的服务器客户端应用程序,我面临着一个问题,当用户只需开启关闭WiFi他/她的iOS设备上,在网状服务器不知道这件事。 服务器需要知道要为该用户执行清理并将其设置为脱机,但现在当用户再次尝试连接时,服务器只是告诉他他/她已经联机。Netty的通道封闭检测
10
A
回答
13
如果我理解正确的话您的问题:你想监听客户端通道关闭的事件在服务器端,并做一些会话清理,
有两种方法来监听通道关闭的事件Netty中:
1)如果您的服务器处理程序延伸SimpleChannelHandler/SimpleChannelHandler
,那么可以重写如下方法,有写会话清除逻辑
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception;
2)如果只有到信道参考存取,那么就可以克等通道不远的未来,并注册您的ChannelFutureListener
实现与会话清理逻辑,
ChannelFuture closeFuture = channel.closeFuture();
closeFuture.addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
//session cleanup logic
}
});
1
检查会话ID和允许重新谈判。或者你可以使用类似cookie控制器的东西。 我可以问一个问题:你的ios客户端如何与netty服务器交互? (您使用在客户端什么框架,什么解码器/编码器配合使用?)
3
当在给定的时间间隔没有请求/响应您可以检测。
相关问题
- 1. 可以netty可靠地检测通道关闭/断开?
- 2. Netty不关闭频道
- 3. C#中的封闭式检测.net
- 4. 通过GAE通道API优雅地处理封闭通道
- 5. netty没有检测到netty-tengative
- 6. Netty打开/关闭“zumbi”连接(通道)的问题
- 7. Netty - 是否关闭客户端的套接字关闭服务器的通道
- 8. Netty ClientBootstrap SSL握手终止 - 通道/ ClientBootstrap关闭?
- 9. 封闭测试到生产
- 10. 的Netty GlobalChannelTrafficShapingHandler用于多个通道的
- 11. 使用带Netty通道的org.slf4j.MDC?
- 12. 在写入封闭管道之前进行C检查
- 13. SVG路径检测重叠或封闭的形状
- 14. 的Netty:使用`IdleStateHandler`检测断线
- 15. 理解道场封闭示例
- 16. 测试一个封闭的套接字
- 17. Netty NIO通道可写但未连接?
- 18. Netty通道写不到处理程序
- 19. 命名管道:如何封闭,直到封闭写入面重新打开?
- 20. Laravel - 通往封闭的路线
- 21. 通过非封闭的标签循环?
- 22. Netty多个频道?
- 23. 关闭golang通道
- 24. 在Windows/D3D中检测.png alpha通道
- 25. 的Netty ChannelUpstreamHandler和HTTP管道
- 26. 在Netty 4.1中,关闭服务器上的通道后,管道中的处理程序何时被删除?
- 27. 检测popover关闭
- 28. PE文件的封装器检测
- 29. 从C程序中检测关闭的unix管道
- 30. SQLLDR误差optionaly通过封闭“'
好了,我已经实现了channelClosed方法,当用户关闭例如应用程序它工作正常,但如果用户只是损失了WiFi连接,这种方式不叫。 – 2012-01-09 12:00:24
那么最好添加一个具有最佳读取空闲超时的IdleStateHandler。如果用户闲置超过这个时间,最有可能是连接丢失的情况下,所以关闭IdleStateEvent从你的服务器处理程序的连接。 – 2012-01-09 15:36:13
在较新版本的Netty中,'getCloseFuture()'似乎是'closeFuture()' – childofsoong 2015-07-07 20:33:08