7

对于 Android 多人游戏玩家之间的通信,我在客户端使用 WebSocket 服务器和TooTallNate 的 Java 库来启用 Android 应用程序中的 WebSocket 支持。因此,明确指出,移动浏览器中的 WebSocket 支持对我来说并不重要。

不幸的是,用户报告说他们遇到了连接失败或未收到消息等问题。这是移动设备上 WebSockets 的普遍问题(阻塞端口、防火墙、移动互联网连接)还是客户端代码中的缺陷?

您是否有使用上述 WebSocket 客户端库的经验?我刚刚发现了适用于 Android 的 autobahn.ws - 但我不知道是否值得从我当前的库中切换(见上文)。

WAMP 呢?WebSocket 技术不完全是我应该使用子协议(?)WAMP 的适当解决方案吗?

4

2 回答 2

8

由于某些移动网络上的网络套接字连接不良,出现了同样的错误。通过以下方式解决了它们:

(1) 移动端口:将 websocket 的服务器和客户端移动到 SSL 端口(端口 443)

(2) ping keep-alive:每隔 X 秒从客户端向服务器发送周期性的“ping”消息,并等待“pong”从服务器返回。如果服务器在 Y 秒内没有返回“pong”,请在客户端重新启动连接。

实施(1)将使您大部分时间到达那里。

于 2013-10-27T21:50:44.810 回答
5

每一项新技术都伴随着一系列新问题。在 WebSocket 的情况下,它与代理服务器的兼容性在大多数公司网络中调解 HTTP 连接。WebSocket 协议使用 HTTP 升级系统(通常用于 HTTP/SSL)将 HTTP 连接“升级”为 WebSocket 连接。一些代理服务器不喜欢这样并且会断开连接。因此,即使给定的客户端使用 WebSocket 协议,也可能无法建立连接。

于 2013-01-12T23:01:13.820 回答