Voglio aggiungere un servizio alla mia app Android che viene eseguito in background con una connessione WebSocket (possibilmente per diverse ore o addirittura giorni) e invia regolarmente alcuni dati a un server.
Ora sembra che ci siano un sacco di librerie WebSocket per Java, e non sono sicuro di quale dovrei usare:
TooTallNate / Java-WebSocket Descrizione da GitHub: implementazione client e server WebSocket barebone scritta in Java al 100%. http://java-websocket.org/ - Questo è collegato al mio primo risultato di google "websocket Android" . Tuttavia, presenta alcuni problemi aperti, in particolare per quanto riguarda le connessioni SSL, e al momento non sembra essere gestito attivamente.
koush / AndroidAsync Descrizione da GitHub: socket asincrono, http (client + server), websocket e libreria socket.io per Android. Basato su nio, non sui thread. - Ancora una volta molte questioni aperte, ma sembra essere mantenuta / lavorata.
Descrizione del progetto Tyrus dal sito Web: JSR 356: API Java per WebSocket - Implementazione di riferimento - Realizzata da Oracle. Non sono sicuro che funzioni in Android.
Informazioni sull'API client Jetty WebSocket dal sito Web: Jetty fornisce anche una libreria client Jetty WebSocket per scrivere per facilitare la comunicazione con i server WebSocket. - Ancora: non sono sicuro che funzioni in Android.
codebutler / android-websockets Descrizione da GitHub: client minimo websocket (hybi13 / RFC) per Android - Questo è usato nell'esempio schwiz / android-websocket , che è la risposta accettata per la domanda StackOverflow " Come fare il Il dispositivo Android ha una connessione TCP a Internet senza wake lock? ".
Atmosfera / wasync Descrizione da GitHub: WebSocket con fallback trasporta la libreria client per Node.js, Android e Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Descrizione da GitHub: implementazione client WebSocket di alta qualità in Java.
square / okhttp Descrizione da GitHub: un client HTTP + SPDY per applicazioni Android e Java. http://square.github.io/okhttp/ -
Ha un modulo Websocket .Come menzionato da scorpiodawg , OkHttp ha il supporto Web incorporato dalla versione 3.5.firebase / TubeSock Descrizione da GitHub: una libreria client WebSocket implementata in Java
Autobahn | Android ( GitHub ) Descrizione dal sito Web: Autobahn | Android è una libreria di rete open source per Java / Android creata dal progetto Autobahn che implementa il protocollo WebSocket e il protocollo WAMP (Web Application Messaging) per la creazione di WebSocket / WAMP mobili nativi clienti. - cloudsurfin ha sottolineato che questo non ha supporto per wss.
Inoltre, esiste una libreria client socket.io nativa per Android:
- nkzawa / socket.io-client.java Descrizione da GitHub: libreria client Socket.IO completa per Java, compatibile con Socket.IO v1.0 e successive.
Utilizzare il client Android socket.io sarebbe utile per me, perché ho intenzione di utilizzare nodejs / socket.io per il frontend web comunque. Ma il client nativo è piuttosto giovane e ha diversi problemi aperti. Inoltre, è mia comprensione che un'app Android non ha alcun vantaggio nell'utilizzare la libreria client socket.io (oltre ad essere compatibile con il server socket.io 1.0), perché il supporto WebSocket può essere assicurato sul lato client .
I miei requisiti sono i seguenti:
- Compatibilità con API Android 9 e successive
- Possibilità di connettersi tramite SSL
- Mantieni la connessione a lungo senza dover tenere un wakelock permanente
- Compatibilità con un'implementazione del server websocket nodejs disponibile o con socket.io
Qualche suggerimento qual è la libreria giusta per questi requisiti?