Я хочу додати Сервіс до свого додатка Android, який працює у фоновому режимі, підтримуючи з'єднання WebSocket (можливо, протягом декількох годин або навіть днів) і регулярно надсилає деякі дані на сервер.
Зараз, здається, існує маса бібліотек WebSocket для Java, і я не впевнений, яку саме я повинен використовувати:
Опис TooTallNate / Java-WebSocket від GitHub: Клієнт Barebones WebSocket і реалізація сервера написані на 100% Java. http://java-websocket.org/ - Цей пов'язаний з моїм першим результатом googling "android websocket" . Однак у нього є досить багато відкритих питань, особливо щодо SSL-підключень, і, схоже, наразі це не підтримується активно.
koush / AndroidAsync Опис від GitHub: Асинхронний сокет, http (клієнт + сервер), веб-розетка та бібліотека socket.io для android. На основі nio, а не ниток. - Знову багато відкритих питань, але, схоже, активізацію підтримували / працювали над.
Опис проекту Tyrus з веб-сайту: JSR 356: Java API для WebSocket - Реалізація довідок - Це зроблено Oracle. Не впевнений, чи працює він в Android.
Інформація про API Jetty WebSocket Client від веб-сайту: Jetty також надає клієнтську бібліотеку Jetty WebSocket, щоб писати, щоб спростити спілкування з серверами WebSocket. - Знову: Не впевнений, чи працює він в Android.
codebutler / android-websockets Опис від GitHub: Найменший мінімальний клієнт websockets (hybi13 / RFC) для Android - цей використовується в прикладі schwiz / android-websocket , що є прийнятою відповіддю на питання StackOverflow " Як зробити Пристрій Android підтримує підключення TCP до Інтернету без блокування блокування? ".
Атмосфера / 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
- Зберігайте з'єднання тривалий час без необхідності тримати постійний будильник
- Сумісність із доступною реалізацією сервера веб-сокетів nodejs або з socket.io
Будь-які пропозиції, яка з них є правильною бібліотекою для цих вимог?