如题.
客户端是android设备,连接到服务器后,使用AlarmManager每10秒发一个心跳包到服务器。如果屏幕不关(使用WakeLock),那么连接会一直健康的存在着,而且心跳也正常的发送;如果按下电源键把屏幕关闭之后,过个15分钟的样子,设备就不再发送心跳包了;此时若服务端调用send()发消息给android设备,会出现socket error(10053)错误(错误描述:您的主机中的软件中止了一个已建立的连接。),如果是手动关闭设备的socket连接,服务端会接收到socket关闭的事件;如果是直接关闭应用设备的应用程序,此时socket是异常关闭,在服务端也会接收到socket关闭的事件;就唯独这种情况服务端没有收到关闭的事件:设备进入休眠过了十几分钟不发心跳包,服务器说C端(android设备上面的APP)关闭了一个连接。
我想问的问题是:有什么办法可以让android在正常休眠的情况下让socket保持长连接(就是不要使用WakeLock),并且心跳正常不断呢?
app处于active状态的时候就保持连接,如果休眠,直接断了,就这么简单