WebSocket в Android WebView

сегодня моя проблема в том, что я разрабатываю приложение, использующее WebSocket. На iOS все работает нормально, но на Android WebView не поддерживает WebSocket. Какой самый быстрый/самый элегантный способ решить эту проблему?

[править]

Поскольку этот пост просматривается довольно часто, я хочу поделиться некоторыми возможными решениями.

Решения:

  1. Реализация клиента Java Websocket и интерфейс JavaScript
  2. Реализация клиента PHP Websocket и выполнение фонового (т.е. jQuery GET) запроса к PHP-скрипту (сработало для меня, так как я хотел отправить только одну строку сообщения.)

Библиотеки веб-сокетов Android

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

Кто-то столкнулся с такой же проблемой и описал, как он ее решил

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

person Langusten Gustel    schedule 22.11.2012    source источник


Ответы (3)


Веб-просмотр Android не поддерживает WebSocket. Поэтому вам нужно реализовать с помощью некоторой библиотеки WebSocket.

jWebSocket http://jwebsocket.org/

веберкнехт http://code.google.com/p/weberknecht/

person wf9a5m75    schedule 22.11.2012
comment
Что, если я хочу сделать это, не меняя исходный код HTML/JS. Что вы думаете о переопределении объекта JS-WebSocket интерфейсом JavaScript? - person Langusten Gustel; 22.11.2012

Я создал пример проекта, который добавляет объект WebSocket в WebView для телефонной связи. Вы можете найти его здесь: https://github.com/pusher/pusher-phonegap-android

Я разместил видео о проекте здесь: http://blog.pusher.com/2012/7/5/pusher-on-phonegap-for-android

Я использовал этот проект, чтобы продемонстрировать, как использовать PhoneGap с Pusher на Android, но в конечном итоге это просто проект, который включает скрипт Pusher. ярлык. Вы можете легко использовать другую библиотеку, которой нужен объект WebSocket, или просто использовать ее напрямую.

Он использует библиотеку websocket-android-phonegap: https://github.com/anismiles/websocket-android-phonegap

person leggetter    schedule 23.11.2012
comment
Вы включаете приложение PhoneGap в Android WebView или просто открываете его в браузере Android? - person Langusten Gustel; 26.11.2012
comment
В примере проекта создается приложение PhoneGap, использующее Android WebView с внедренным объектом WebSocket. Это означает, что вы можете использовать WebSocket в коде JavaScript, работающем в Android WebView. - person leggetter; 27.11.2012
comment
да. Вы пишете свой код на JavaScript, и он использует введенный объект WebSocket, который проксирует вызовы между оболочками JavaScript и Java. Вы можете использовать проект и кодировать только HTML, JavaScript и CSS. Попробуйте, и вы поймете, что я имею в виду. - person leggetter; 27.11.2012
comment
Могу ли я также использовать геолокацию HTML5 в этом WebView? Например, я хочу отслеживать пользователей приложения в режиме реального времени с помощью геолокации. - person Ben Sewards; 05.03.2013
comment
Насколько мне известно, WebView является экземпляром стандартного приложения для интернет-браузера. Итак, если он поддерживает геолокацию, то да, вы можете это сделать. - person leggetter; 05.03.2013

сначала проверьте код ошибки; если код: 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">
person Kaeson    schedule 30.09.2020