我目前正在使用 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 插件可用!