【问题标题】:WebSocket in Android WebViewAndroid WebView 中的 WebSocket
【发布时间】:2012-11-10 12:59:02
【问题描述】:

今天我的问题是我正在开发一个使用 WebSocket 的应用程序。在 iOS 上一切正常,但在 android 上 WebView 不支持 WebSocket。解决这个问题的最快/最优雅的方法是什么?

[编辑]

由于这篇文章经常被查看,我想分享一些可能的解决方案。

解决方案:

  1. Java Websocket 客户端实现和 JavaScript 接口
  2. PHP Websocket 客户端实现 & 向 PHP 脚本发出背景(即 jQuery GET)请求(对我有用,因为我只想发送一行消息。)

Android Websocket 库

  1. http://autobahn.ws/
  2. http://code.google.com/p/weberknecht

有人遇到了同样的问题并描述了他的工作方式

  1. http://chpeck.tumblr.com/post/37273036645/socket-io-with-android-webview

【问题讨论】:

    标签: android webview websocket


    【解决方案1】:

    我创建了一个示例项目,它将 WebSocket 对象添加到用于 phonegap 的 WebView。你可以在这里找到它: https://github.com/pusher/pusher-phonegap-android

    我在这里放了一个关于这个项目的视频: http://blog.pusher.com/2012/7/5/pusher-on-phonegap-for-android

    我使用这个项目来演示如何在 Android 上将 PhoneGap 与 Pusher 一起使用,但最终它只是一个恰好包含 Pusher 脚本标签的项目。 您可以轻松地使用另一个需要 WebSocket 对象的库,或者直接使用它。

    它使用 websocket-android-phonegap 库: https://github.com/anismiles/websocket-android-phonegap

    【讨论】:

    • 您是在 Android WebView 中包含您的 PhoneGap 应用程序还是刚刚在 Android 浏览器中打开?
    • 示例项目创建了一个 PhoneGap 应用程序,该应用程序使用 Android WebView 和注入的WebSocket 对象。这意味着您可以在 Android WebView 中运行的 JavaScript 代码中使用 WebSocket
    • 是的。您用 JavaScript 编写代码,它使用注入的 WebSocket 对象代理 JavaScript 和 Java 包装器之间的调用。除了 HTML、JavaScript 和 CSS,您可以使用项目和代码。试试看,你就会明白我的意思了。
    • 我也可以在这个 WebView 中使用 HTML5 地理位置吗?例如,我想使用地理位置实时跟踪应用程序的用户。
    • 据我所知,WebView 是股票互联网浏览器应用程序的一个实例。所以,如果它支持地理定位,那么是的,你可以这样做。
    【解决方案2】:

    Android webview 不支持 WebSocket。所以你需要用一些 WebSocket 库来实现。

    jWebSocket http://jwebsocket.org/

    weberknecht http://code.google.com/p/weberknecht/

    【讨论】:

    • 如果我想在不更改 HTML/JS 源的情况下使用它怎么办。您如何看待通过 JavaScript 接口覆盖 JS-WebSocket 对象?
    【解决方案3】:

    首先检查您的错误代码;如果代码是:ERR_CLEARTEXT_NOT_PERMITTED; 尝试将 android:usesCleartextTraffic="true" 添加到 AndroidManifest.xml 中的应用程序标记,如下所示:

     <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多