对于Android多人游戏的玩家之间的通信,我在客户端使用WebSocket服务器和TooTallNate's Java library来启用Android应用中的WebSocket支持。所以只是要明确指出,移动浏览器中的WebSocket支持对我来说并不重要。
不幸的是,用户报告说他们遇到了连接失败或未接收消息等问题。这是移动设备上的WebSockets的一般问题(阻塞端口,防火墙,移动互联网连接)还是客户端代码中的一个缺陷?
您是否具有上述WebSocket客户端库的经验?我刚刚发现了autobahn.ws for Android - 但我不知道是否值得从当前的库中切换(见上文)。
WAMP怎么样? WebSocket技术不是完全正确的解决方案,因此我应该使用子协议(?)WAMP?
答案 0 :(得分:8)
在某些移动网络上发生了与错误的Web套接字连接相同的错误。解决了他们:
(1)移动端口:通过服务器和客户端移动websocket到SSL端口(端口443)
(2)ping keep-alive:每隔X秒从客户端向服务器发送定期“ping”消息,并等待“pong”从服务器返回。如果服务器在Y秒内没有返回“pong”,请在客户端重新启动连接。
实施(1)将帮助你完成大部分工作。
答案 1 :(得分:5)
每项新技术都会带来一系列新问题。在WebSocket的情况下,它与代理服务器的兼容性在大多数公司网络中调解HTTP连接。 WebSocket协议使用HTTP升级系统(通常用于HTTP / SSL)将HTTP连接“升级”到WebSocket连接。某些代理服务器不喜欢这样,会丢弃连接。因此,即使给定的客户端使用WebSocket协议,也可能无法建立连接。