我们正在使用Web套接字进行服务器和Android应用之间的实时通信。但这里的主要问题是Web套接字在几个时间间隔内保持断开连接,并且我们无法在两侧设置套接字超时。有关此主题的问题有多少,但结果对我们没有帮助。
服务器:对于我们正在使用.net的服务器,样本取自https://github.com/paulbatum/WebSocket-Samples,我们从中获取了AspNetChat文件夹并从中开发了套接字服务器
Android客户端:示例来自java-websocket-1.3.0,而android中的代码是以如下方式编写的:如果套接字断开,它将自动重新连接。
我们面临的主要问题是在一段时间间隔之后说服务器和客户端之间的websocket连接不起作用大约30分钟。即使它已断开连接我们也无法说,但是当从android发送消息时,日志说它连接到服务器并且服务器没有在onMessage函数中接收消息。
如果有解决方案,这将更有帮助,如果有任何其他替代协议,我们也可以检查。
提前致谢
答案 0 :(得分:4)
经过长时间的研究,我们发现服务器端的webSocket在某个时间间隔(例如10分钟的空闲时间)产生错误,并且在此空闲时段使用onClose()方法调用onError()方法。在此过程之后,服务器没有完全关闭套接字,而只是从内存中删除。为了解决这个问题,我们发出了一条保持活动消息,即使有任何错误产生应用程序和服务器都知道并且套接字重新连接,也会使用此消息发送并确认每一分钟。
结果:添加keep alive方法解决了我们的问题。