Я хочу добавить службу в свое приложение для Android, которое работает в фоновом режиме с подключением WebSocket (возможно, в течение нескольких часов или даже дней) и регулярно отправляет некоторые данные на сервер.
Теперь, похоже, есть куча библиотек WebSocket для Java, и я не уверен, какую из них мне следует использовать:
TooTallNate / Java-WebSocket Описание с GitHub: базовая реализация клиента и сервера WebSocket, написанная на 100% Java. http://java-websocket.org/ - это ссылка в моем первом результате поиска в Google "android websocket" . Однако у него довольно много открытых проблем, особенно с SSL-соединениями, и, похоже, в настоящее время он не поддерживается активно.
koush / AndroidAsync Описание с GitHub: асинхронный сокет, http (клиент + сервер), websocket и библиотека socket.io для android. На основе nio, а не потоков. - Снова много открытых вопросов, но, похоже, они активно поддерживаются / работают.
Описание проекта Tyrus с веб-сайта: JSR 356: Java API для 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 .Как упоминал scorpiodawg , OkHttp имеет встроенную поддержку веб-сокетов, начиная с версии 3.5.firebase / TubeSock Описание с GitHub: клиентская библиотека WebSocket, реализованная на Java
Autobahn | Android ( GitHub ) Описание с веб-сайта: Autobahn | Android - это сетевая библиотека с открытым исходным кодом для Java / Android, созданная проектом Autobahn, который реализует протокол WebSocket и протокол обмена сообщениями веб-приложений (WAMP) для создания собственного мобильного WebSocket / WAMP клиентов. - cloudurfin указал, что здесь нет поддержки wss.
Кроме того, есть собственная клиентская библиотека socket.io для Android:
- nkzawa / socket.io-client.java Описание с GitHub: полнофункциональная клиентская библиотека Socket.IO для Java, совместимая с Socket.IO v1.0 и новее.
Мне было бы удобно использовать Android-клиент socket.io, потому что я все равно планирую использовать nodejs / socket.io для веб-интерфейса. Но нативный клиент довольно молод, и у него есть несколько нерешенных проблем. И в дополнение к этому, насколько я понимаю, приложение для Android не имеет никаких преимуществ от использования клиентской библиотеки socket.io (кроме совместимости с сервером socket.io 1.0), потому что поддержка WebSocket может быть гарантирована на стороне клиента. ,
Мои требования следующие:
- Совместимость с Android API 9 и выше
- Возможность подключения через SSL
- Сохраняйте соединение в течение длительного времени без необходимости удерживать постоянный wakelock
- Совместимость с доступной реализацией сервера nodejs websocket или с socket.io
Есть предложения, какая библиотека подходит для этих требований?