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