【发布时间】:2013-06-12 11:53:52
【问题描述】:
我目前正在使用 HTML5 和 Javascript 实现一个带有 Phonegap 的跨平台移动应用程序。我决定使用 Websockets 与我们的后端服务器建立连接以进行通信和交换数据。默认情况下,Blackberry 和 iOs 浏览器支持 Websocket。对于 Android,有一些很有前途的插件可以将 websockets 集成到 Android java 代码中,并使用 Javascript 在 Phonegap 中执行它。 我选择了这个:
我将该插件集成到我的 android 项目中,并按照自述文件中的每一步操作。然后我在装有 Android 4.0.3 的物理设备三星 Galaxy Nexus 上对其进行了测试。它运行良好,与黑莓和 iO 的使用没有明显差异。我还将应用程序部署到三星 Galaxy Tab 2
好吧,如果我将应用程序部署到操作系统版本高于 4.0.3 的 Android 设备(4.1.2 和 4.2.2 上的 testet),就会出现我的问题。如果我使用带有 Android 4.2.2 的三星 Galaxy Nexus,它甚至会出现问题!
有趣的是,我使用 Phonegap 2.6.0,它会自动创建基于操作系统版本 4.2.2 的 Android 项目!!
问题是,项目的原生 Android 部分内的 Websocket 服务器无法打开与请求客户端的连接。通常客户端发送一个打开连接的请求,服务器通过回调通知客户端连接已经建立。
如果使用 Android 4.0.4+,服务器连接会返回 404 BAD REQUEST 消息而不是打开连接。
由于这个问题,我尝试了一些其他插件,实际上我能找到的每一个插件。所有这些都在 Android 4.0.3 上运行良好,在更高版本上都没有。
有没有人在该特定主题方面有任何经验,可以给我一个提示,我可能忘记了什么或我必须考虑哪些点?我无法想象没有适用于 Android 4.0.4+ 的可用 websocket 插件!
【问题讨论】:
-
您的应用程序是否 100% 回复 WebSocket 连接?换句话说,如果无法建立 WebSocket 连接,您的应用程序是否会按预期停止工作?如果是这样,您应该选择一个也提供 HTTP 回退的解决方案。
-
我是 github.com/mkuklis/phonegap-websocket 背后的开发人员,我将它用于 Android >= 4.0.4。在过去的 2 个月中进行了一些修复,应该可以解决您的问题。如果您使用的是 Phonegap 2.x.x 请使用此分支:github.com/mkuklis/phonegap-websocket/tree/phonegap-2.x.x