0

我正在使用 Phonegap 开发一个应用程序,并且我正在使用带有 AutobahnJS 的 websocket 作为客户端应用程序。

远程 websocket 服务器是使用 PHP 和 Ratchet 开发的,并通过 SSL 运行,所以我使用 wss:// 进行连接。

该应用程序在模拟器(Android 4.4.2)中运行良好,但无法使用运行 Android 4.0.4 的真实设备连接到 websocket 服务器。onOpen 回调不会触发,只会调用 onClose。

this.conn = new ab.Session(
  this.wsUri,
  function() { that.onOpen() },
  function() { that.onClose() },
  { // Additional parameters, we're ignoring the WAMP sub-protocol for older browsers
    'skipSubprotocolCheck': true
  }
);

为了使应用程序在模拟器中工作,我需要安装websocket 插件

所以问题是:

有没有机会在运行 Android 4.0.4 的设备上使用 Autobahn 和 Websocket?

提前致谢!

4

1 回答 1

2

从 Android 4.4 开始,WebView 基于 Chromium(版本 30),并包含对 WebSocket 的原生支持。

旧版本的 Android 具有基于旧版本 WebKit 的 WebView,并且(据我所知)缺乏对本机 WebSocket 的支持:http: //jimbergman.net/webkit-version-in-android-version/

这意味着:您要么需要使用 Phonegap 的 WebSocket 插件将 WebSocket 添加到 WebView,要么等待 AutobahnJS 完成基于 HTTP longpoll 的回退(正在开发中) - 并使用支持 WAMP-over-longpoll 的 WAMP v2 服务器。

于 2014-05-08T09:59:19.273 回答