Chcę dodać usługę do mojej aplikacji na Androida, która działa w tle, utrzymując połączenie WebSocket (prawdopodobnie przez kilka godzin lub nawet dni) i regularnie wysyła niektóre dane na serwer.
Teraz wydaje się, że jest kilka bibliotek WebSocket dla Javy i nie jestem pewien, której powinienem użyć:
TooTallNate / Java-WebSocket Opis z GitHub: Podstawowa implementacja klienta i serwera WebSocket napisana w 100% w Javie. http://java-websocket.org/ - ten link znajduje się w moim pierwszym wyniku wyszukiwania w Google „android websocket” . Jednak ma kilka otwartych problemów, zwłaszcza dotyczących połączeń SSL, i wydaje się, że w tej chwili nie jest aktywnie obsługiwany.
koush / AndroidAsync Opis z GitHub: asynchroniczne gniazdo, http (klient + serwer), websocket i biblioteka socket.io dla systemu Android. Oparty na nio, a nie wątkach. - Znowu wiele otwartych kwestii, ale wydaje się, że są aktywnie utrzymywane / nad którymi pracowano.
Opis projektu Tyrus ze strony internetowej: JSR 356: Java API dla WebSocket - implementacja referencyjna - jest wykonana przez Oracle. Nie jestem pewien, czy działa w systemie Android.
Informacje o interfejsie API klienta Jetty WebSocket ze strony internetowej: Jetty udostępnia również bibliotekę klienta Jetty WebSocket do pisania, która ułatwia komunikację z serwerami WebSocket. - Znowu: nie jestem pewien, czy działa w systemie Android.
codebutler / android-websockets Opis z GitHub: Klient Bare minimum websockets (hybi13 / RFC) dla Androida - ten jest używany w schwiz / android-websocket-example , co jest akceptowaną odpowiedzią na pytanie StackOverflow " Jak zrobić Urządzenie z systemem Android ma połączenie TCP z Internetem bez blokady wybudzania? ”.
Atmosphere / wasync Description from GitHub: WebSockets with fallback transports client library for Node.js, Android and Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Opis z GitHub: Wysokiej jakości implementacja klienta WebSocket w Javie.
square / okhttp Opis z GitHub: Klient HTTP + SPDY dla aplikacji Android i Java. http://square.github.io/okhttp/ -
Posiada moduł Websocket .Jak wspomniał scorpiodawg , OkHttp ma wbudowaną obsługę websocket od wersji 3.5.firebase / TubeSock Opis z GitHub: Biblioteka klienta WebSocket zaimplementowana w Javie
Autobahn | Android ( GitHub ) Opis ze strony internetowej: Autobahn | Android to biblioteka sieciowa typu open source dla języka Java / Android stworzona przez projekt Autobahn, który implementuje protokół WebSocket i protokół komunikacyjny aplikacji sieci Web (WAMP) do tworzenia natywnego mobilnego protokołu WebSocket / WAMP klientów. - cloudsurfin zwrócił uwagę, że to nie obsługuje wss.
Ponadto istnieje natywna biblioteka klienta socket.io dla systemu Android:
- nkzawa / socket.io-client.java Opis z GitHub: W pełni funkcjonalna biblioteka klienta Socket.IO dla języka Java, która jest kompatybilna z Socket.IO v1.0 i nowszymi.
Korzystanie z klienta socket.io na Androida byłoby dla mnie przydatne, ponieważ i tak planuję używać nodejs / socket.io do frontendu internetowego. Ale rodzimy klient jest dość młody i ma kilka otwartych problemów. Poza tym, rozumiem, że aplikacja na Androida nie ma żadnych korzyści z używania biblioteki klienta socket.io (poza kompatybilnością z serwerem socket.io 1.0), ponieważ obsługa WebSocket może być zapewniona po stronie klienta .
Moje wymagania są następujące:
- Zgodność z Android API 9 i nowszym
- Możliwość połączenia przez SSL
- Utrzymuj połączenie przez długi czas bez konieczności utrzymywania stałego wakelocka
- Kompatybilność z dostępną implementacją serwera nodejs websocket lub z socket.io
Jakieś sugestie, która biblioteka jest odpowiednia dla tych wymagań?