【问题标题】:Phonegap websocket plugin with android version >4.0.3 not workingandroid版本> 4.0.3的Phonegap websocket插件不起作用
【发布时间】:2013-06-12 11:53:52
【问题描述】:

我目前正在使用 HTML5 和 Javascript 实现一个带有 Phonegap 的跨平台移动应用程序。我决定使用 Websockets 与我们的后端服务器建立连接以进行通信和交换数据。默认情况下,Blackberry 和 iOs 浏览器支持 Websocket。对于 Android,有一些很有前途的插件可以将 websockets 集成到 Android java 代码中,并使用 Javascript 在 Phonegap 中执行它。 我选择了这个:

websocket-android-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 上运行良好,在更高版本上都没有。

tried websocket-plugin 2

tried websocket-plugin 3

tried websocket-plugin 4

tried websocket-plugin 5

有没有人在该特定主题方面有任何经验,可以给我一个提示,我可能忘记了什么或我必须考虑哪些点?我无法想象没有适用于 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

标签: android websocket cordova


【解决方案1】:

这里可能有 2 个问题:库没有长时间更新,并且只实现了 WebSocket 协议的过时版本。其次,最近的 Android 版本不允许在主/UI 线程上进行任何网络活动。

AutobahnAndroid 实现 RFC6455 WebSocket 并在后台线程上执行所有网络活动。虽然没有与 Phonegap 集成。

免责声明:我是 Autobahn 的原作者,为 Tavendo 工作。

【讨论】:

  • AutobahnAndroid 是否支持 WSS 连接?
  • 有一个支持 WSS 的实验分支。尚未在 master 上合并。
【解决方案2】:

我也遇到了类似的问题,可以通过两种方式解决:

  • 如果可以回退到长轮询,它将正常工作。试试这个。我不推荐,因为这将是技术降级。

  • 在具有 Android 版本 4.1 和 4.2 的三星和 LG 设备上,webSockets 的实现存在错误。这是我的测试结果,如果您可以检查具有相同版本的 Google 设备(Nexus),它应该可以工作。为了消除此错误,您需要在通过 webSocket 连接时设置超时。

您可以参考以下链接:

链接 1:https://github.com/zotonic/zotonic/issues/569 链接2:https://github.com/Modernizr/Modernizr/issues/1399

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2017-11-20
    相关资源
    最近更新 更多