Je souhaite ajouter un service à mon application Android qui s'exécute en arrière-plan avec une connexion WebSocket (éventuellement sur plusieurs heures, voire plusieurs jours) et envoie régulièrement des données à un serveur.
Maintenant, il semble y avoir un tas de bibliothèques WebSocket pour Java, et je ne sais pas laquelle je devrais utiliser:
TooTallNate / Java-WebSocket Description de GitHub: Une implémentation client et serveur WebSocket barebones écrite en 100% Java. http://java-websocket.org/ - Celui-ci est lié à mon premier résultat de googler "android websocket" . Cependant, il a quelques problèmes ouverts, en particulier concernant les connexions SSL, et il ne semble pas être activement maintenu pour le moment.
koush / AndroidAsync Description de GitHub: socket asynchrone, http (client + serveur), websocket et bibliothèque socket.io pour Android. Basé sur nio, pas sur des threads. - Encore une fois, de nombreux problèmes en suspens, mais semble être maintenu / travaillé activiley.
Project Tyrus Description du site Web: JSR 356: API Java pour WebSocket - Implémentation de référence - Ceci est fait par Oracle. Je ne sais pas si cela fonctionne sous Android.
Informations sur l' API client Jetty WebSocket à partir du site Web: Jetty fournit également une bibliothèque cliente Jetty WebSocket pour écrire et faciliter la conversation avec les serveurs WebSocket. - Encore une fois: je ne sais pas si cela fonctionne sous Android.
codebutler / android-websockets Description de GitHub: Client websockets minimum (hybi13 / RFC) pour Android - Celui-ci est utilisé dans schwiz / android-websocket-example , qui est la réponse acceptée pour la question StackOverflow " Comment faire le L'appareil Android détient une connexion TCP à Internet sans verrouillage de réveil? ".
Atmosphere / wasync Description de GitHub: WebSockets avec fallback transporte la bibliothèque cliente pour Node.js, Android et Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Description de GitHub: implémentation de client WebSocket de haute qualité en Java.
square / okhttp Description de GitHub: Un client HTTP + SPDY pour les applications Android et Java. http://square.github.io/okhttp/ -
Il a un module Websocket .Comme mentionné par scorpiodawg , OkHttp a un support websocket intégré depuis la version 3.5.Firebase / TubeSock Description de GitHub: une bibliothèque client WebSocket implémentée en Java
Autobahn | Android ( GitHub ) Description du site Web: Autobahn | Android est une bibliothèque de mise en réseau open-source pour Java / Android créée par le projet Autobahn qui implémente le protocole WebSocket et le protocole de messagerie d'application Web (WAMP) pour la création de WebSocket / WAMP mobile natif clients. - cloudsurfin a fait remarquer que cela n'a pas de support pour wss.
De plus, il existe une bibliothèque client native socket.io pour Android:
- nkzawa / socket.io-client.java Description de GitHub: Bibliothèque cliente Socket.IO complète pour Java, compatible avec Socket.IO v1.0 et versions ultérieures.
Utiliser le client Android socket.io serait pratique pour moi, car je prévois d'utiliser de toute façon nodejs / socket.io pour le frontend Web. Mais le client natif est assez jeune et a plusieurs problèmes en suspens. Et en plus de cela, je crois comprendre qu'une application Android n'a aucun avantage à utiliser la bibliothèque client socket.io (en plus d'être compatible avec le serveur socket.io 1.0), car la prise en charge de WebSocket peut être assurée côté client .
Mes exigences sont les suivantes:
- Compatibilité avec l'API Android 9 et supérieur
- Possibilité de se connecter via SSL
- Gardez la connexion pendant une longue période sans avoir à tenir un wakelock permanent
- Compatibilité avec une implémentation de serveur websocket nodejs disponible ou avec socket.io
Des suggestions quelle est la bonne bibliothèque pour ces exigences?