【问题标题】:WebSocket support on mobile devices移动设备上的 WebSocket 支持
【发布时间】:2012-12-27 00:59:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android websocket multiplayer


    【解决方案1】:

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

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

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

    实施 (1) 将帮助您实现大部分目标。

    【讨论】:

    • 我发现 ping 非常重要,因为 Android 和 iOS 的 websocket 客户端的当前状态(截至 2016 年)不能很好地处理低覆盖率的空闲连接下降,甚至超过在某些情况下 wifi。
    【解决方案2】:

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

    【讨论】:

    • 谢谢!这是否意味着,无论使用的客户端库和移动设备(或运营商)如何,WebSockets 总是会因为代理而受到质疑?另一方面,在使用移动数据套餐时,您之间通常没有代理,对吗?
    • 第一个问题。是的,第二个问题。这取决于,通常我们确实有。
    • 另外,你能分享你的客户端和服务器 websockets 连接和消息传递的代码吗?
    • 在客户端,我使用github.com/TooTallNate/Java-WebSocket,在服务器端,我使用pusher.com
    • 但这有多普遍?例如,很多移动运营商网络是否都是这种行为?
    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多