Android 检测WebSocket连接是否关闭
我正在使用node.js和构建一个简单的聊天websocket服务器 客户端是一个Android应用程序 服务器必须以两种方式与客户端通信:Android 检测WebSocket连接是否关闭,android,node.js,websocket,Android,Node.js,Websocket,我正在使用node.js和构建一个简单的聊天websocket服务器 客户端是一个Android应用程序 服务器必须以两种方式与客户端通信: 连接客户端时的websocket消息(应用程序在前台打开) 使用Google GCM else推送通知 但是有一个小问题我需要解决 当客户端连接到服务器且internet连接断开时,不会通知服务器,因为客户端未发送结束帧。。因此,在大约10秒钟内,服务器认为该连接仍然存在 如果在这10秒内,服务器通过套接字发送消息。。消息永远无法到达客户端 我需要检测
- 连接客户端时的websocket消息(应用程序在前台打开)
- 使用Google GCM else推送通知
有办法吗?从服务器端看,不干净的断开连接(未发送断开连接消息)与非常慢的连接是无法区分的
你需要做的是有某种心跳。WebSockets在协议级别对此进行了ping。如果您的库公开了这一点,则将ping设置为您愿意接受的延迟,并为超时后失败/未完成的情况添加处理程序。从服务器端看,无法区分不干净的断开连接(未发送断开连接消息)和非常慢的连接
你需要做的是有某种心跳。WebSockets在协议级别对此进行了ping。如果您的库公开了此问题,请将ping设置为您愿意接受的延迟,并为超时后失败/未完成添加处理程序。回答我自己的问题,因为:这是不可能的,我找到了另一种更好的方法来处理我的具体案例
- 当服务器向客户机发送消息时,客户机会回复服务器,让服务器知道消息已传递给客户机
- 如果服务器在超时后没有收到来自客户机的响应,则认为连接已关闭
- 继续通过GCM发送消息(或存储消息以便在客户端重新连接时再次发送)
- 当服务器向客户机发送消息时,客户机会回复服务器,让服务器知道消息已传递给客户机
- 如果服务器在超时后没有收到来自客户机的响应,则认为连接已关闭
- 继续通过GCM发送消息(或存储消息以便在客户端重新连接时再次发送)
- 回答我自己的问题,因为:这是不可能的,我找到了另一种更好的方法来处理我的具体案例