Я хочу добавить Service в мое приложение для Android, которое работает в фоновом режиме с WebSocket (возможно, в течение нескольких часов или даже дней) и регулярно отправляет некоторые данные на сервер.
Теперь для Java существует куча библиотек WebSocket, и я не уверен, какой из них я должен использовать:
-
TooTallNate/Java-WebSocket Описание от GitHub: Баботированная версия клиента и сервера WebSocket, написанная на 100% Java. http://java-websocket.org/ - Этот связанный в мой первый результат googling "android websocket" . Тем не менее, у него есть довольно много открытых вопросов, особенно о SSL-соединениях, и в настоящее время он, похоже, активно не поддерживается.
-
koush/AndroidAsync Описание от GitHub: асинхронный сокет, http (клиент + сервер), websocket и библиотека socket.io для Android. На основе nio, а не потоков. - Опять много открытых вопросов, но, похоже, они поддерживаются и работают.
-
Проект Tyrus Описание с сайта: JSR 356: API Java для WebSocket - Реализация ссылок - Это сделано Oracle. Не уверен, работает ли он на Android.
-
API клиента Jetty WebSocket Информация с веб-сайта: Jetty также предоставляет клиентскую библиотеку Jetty WebSocket, чтобы упростить работу с серверами WebSocket. - Снова: не уверен, работает ли он на Android.
-
codebutler/android-websockets Описание от GitHub: Минимальные веб-интерфейсы (hybi13/RFC) для Android - Этот используется в schwiz/android-websocket-example, который является принятым ответом на вопрос StackOverflow Как заставить Android-устройство поддерживать TCP-соединение с Интернетом без блокировки слежения? ".
-
Atmosphere/wasync Описание от GitHub: WebSockets с резервной передачей клиентской библиотеки для Node.js, Android и Java http://async-io.org
-
TakahikoKawasaki/nv-websocket-client Описание от GitHub: Высококачественная реализация клиента WebSocket на Java.
-
square/okhttp Описание от GitHub: клиент HTTP + SPDY для приложений Android и Java. http://square.github.io/okhttp/ -
У него есть Websocket module.Как упомянутый scorpiodawg, OkHttp имеет встроенную поддержку websocket с версии 3.5. -
firebase/TubeSock Описание из GitHub: клиентская библиотека WebSocket, реализованная в Java
-
Autobahn | Android (GitHub) Описание с сайта: Autobahn | Android - это сетевая библиотека с открытым исходным кодом для Java/Android, созданная проектом Autobahn, которая реализует протокол WebSocket и протокол обмена сообщениями веб-приложений (WAMP) для создания собственных мобильных клиентов WebSocket/WAMP. - pointurfin указал, что это не поддерживает wss.
Кроме того, существует родная socket.io клиентская библиотека для Android:
- nkzawa/socket.io-client.java Описание от GitHub: полнофункциональная клиентская библиотека Socket.IO для Java, совместимая с Socket.IO v1.0 и новее.
Чтобы использовать клиент сокета socket.io, мне было бы удобно, потому что я планирую использовать nodejs/socket.io для веб-интерфейса в любом случае. Но родной клиент довольно молод и имеет несколько открытых проблем. И в дополнение к этому, я понимаю, что приложение для Android не имеет никакой пользы от использования клиентской библиотеки socket.io(кроме совместимости с сервером socket.io 1.0), поскольку поддержка WebSocket может быть обеспечена на стороне клиента.
Мои требования следующие:
- Совместимость с Android API 9 и выше
- Возможность подключения через SSL
- Держите соединение в течение длительного времени без необходимости держать постоянный wakelock
- Совместимость с доступной версией сервера websocket nodejs или с socket.io
Любые предложения, которые являются правильной библиотекой для этих требований?