Ich möchte meiner Android-App einen Dienst hinzufügen , der im Hintergrund mit einer WebSocket- Verbindung (möglicherweise über mehrere Stunden oder sogar Tage) ausgeführt wird und regelmäßig Daten an einen Server sendet.
Jetzt scheint es eine Reihe von WebSocket-Bibliotheken für Java zu geben, und ich bin mir nicht sicher, welche ich verwenden soll:
TooTallNate / Java-WebSocket Beschreibung von GitHub: Eine Barebone-WebSocket-Client- und -Server-Implementierung, die zu 100% in Java geschrieben ist. http://java-websocket.org/ - Dieser ist in meinem ersten Ergebnis des Googelns von "Android Websocket" verlinkt. Es gibt jedoch einige offene Probleme, insbesondere bei SSL-Verbindungen, und es scheint derzeit nicht aktiv gewartet zu werden.
koush / AndroidAsync Beschreibung von GitHub: Asynchroner Socket, http (Client + Server), Websocket und Socket.io-Bibliothek für Android. Basierend auf nio, nicht auf Threads. - Wieder viele offene Fragen, scheint aber aktiv gepflegt / bearbeitet zu werden.
Projekt Tyrus Beschreibung von der Website: JSR 356: Java API für WebSocket - Referenzimplementierung - Diese wird von Oracle erstellt. Nicht sicher, ob es in Android funktioniert.
Jetty WebSocket Client-API- Informationen von der Website: Jetty bietet auch eine Jetty WebSocket Client-Bibliothek zum Schreiben, um das Sprechen mit WebSocket-Servern zu vereinfachen. - Nochmals: Nicht sicher, ob es in Android funktioniert.
codebutler / android-websockets Beschreibung von GitHub: Bare Minimum-Websockets (hybi13 / RFC) -Client für Android - Dieser wird im Beispiel schwiz / android-websocket verwendet. Diesist die akzeptierte Antwort auf die StackOverflow-Frage " How to make the Android-Gerät hält eine TCP-Verbindung zum Internet ohne Wake-Lock? ".
Atmosphere / wasync Beschreibung von GitHub: WebSockets mit Fallback transportieren die Clientbibliothek für Node.js, Android und Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Beschreibung von GitHub: Hochwertige WebSocket-Client-Implementierung in Java.
square / okhttp Beschreibung von GitHub: Ein HTTP + SPDY-Client für Android- und Java-Anwendungen. http://square.github.io/okhttp/ -
Es verfügt über ein Websocket-Modul .Wie von scorpiodawg erwähnt , bietet OkHttp seit Version 3.5 eine integrierte Websocket-Unterstützung.firebase / TubeSock Beschreibung von GitHub: Eine in Java implementierte WebSocket- Clientbibliothek
Autobahn | Android ( GitHub ) Beschreibung von der Website: Autobahn | Android ist eine Open-Source-Netzwerkbibliothek für Java / Android, die vom Autobahn-Projekt erstellt wurde und das WebSocket-Protokoll und das Web Application Messaging Protocol (WAMP) zum Erstellen von nativem mobilem WebSocket / WAMP implementiert Kunden. - Cloudsurfin wies darauf hin, dass dies keine Unterstützung für wss hat.
Darüber hinaus gibt es eine native socket.io-Clientbibliothek für Android:
- nkzawa / socket.io-client.java Beschreibung von GitHub: Voll funktionsfähige Socket.IO-Clientbibliothek für Java, die mit Socket.IO v1.0 und höher kompatibel ist.
Die Verwendung des Android-Clients socket.io wäre für mich praktisch, da ich ohnehin vorhabe, nodejs / socket.io für das Web-Frontend zu verwenden. Der einheimische Kunde ist jedoch noch recht jung und hat mehrere offene Fragen. Darüber hinaus habe ich das Verständnis, dass eine Android-App keinen Nutzen aus der Verwendung der Client-Bibliothek socket.io hat (abgesehen davon, dass sie mit dem Server socket.io 1.0 kompatibel ist), da die Unterstützung von WebSocket auf der Client-Seite sichergestellt werden kann .
Meine Anforderungen sind wie folgt:
- Kompatibilität mit Android API 9 und höher
- Möglichkeit der Verbindung über SSL
- Halten Sie die Verbindung für eine lange Zeit, ohne ein permanentes Wakelock halten zu müssen
- Kompatibilität mit einer verfügbaren NodeJS-Websocket-Server-Implementierung oder mit socket.io
Irgendwelche Vorschläge, welche Bibliothek die richtige für diese Anforderungen ist?