Quiero agregar un Servicio a mi aplicación de Android que se ejecuta en segundo plano con una conexión WebSocket (posiblemente durante varias horas o incluso días) y envía regularmente algunos datos a un servidor.
Ahora parece que hay un montón de bibliotecas WebSocket para Java, y no estoy seguro de cuál debo usar:
TooTallNate / Java-WebSocket Descripción de GitHub: Una implementación de cliente y servidor WebSocket básica escrita en Java al 100%. http://java-websocket.org/ - Este está vinculado en mi primer resultado de googlear "android websocket" . Sin embargo, tiene bastantes problemas abiertos, especialmente sobre las conexiones SSL, y no parece mantenerse activamente en este momento.
koush / AndroidAsync Descripción de GitHub: socket asíncrono, http (cliente + servidor), websocket y biblioteca socket.io para Android. Basado en nio, no hilos. - Nuevamente muchos problemas abiertos, pero parece ser activiley mantenido / trabajado.
Descripción del proyecto Tyrus del sitio web: JSR 356: API de Java para WebSocket - Implementación de referencia - Esto es hecho por Oracle. No estoy seguro si funciona en Android.
Información de la API del cliente Jetty WebSocket del sitio web: Jetty también proporciona una biblioteca del cliente Jetty WebSocket para escribir y facilitar la conversación con los servidores WebSocket. - Nuevamente: no estoy seguro si funciona en Android.
codebutler / android-websockets Descripción de GitHub: Cliente mínimo desnudo de websockets (hybi13 / RFC) para Android: este se usa en schwiz / android-websocket-example , que es la respuesta aceptada para la pregunta StackOverflow " Cómo hacer el ¿El dispositivo Android tiene una conexión TCP a Internet sin bloqueo de activación? ".
Atmosphere / wasync Descripción de GitHub: WebSockets con biblioteca de cliente de transporte de respaldo para Node.js, Android y Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Descripción de GitHub: Implementación de cliente WebSocket de alta calidad en Java.
square / okhttp Descripción de GitHub: un cliente HTTP + SPDY para aplicaciones Android y Java. http://square.github.io/okhttp/ -
Tiene un módulo Websocket .Según lo mencionado por scorpiodawg , OkHttp tiene soporte incorporado de websocket desde la versión 3.5.Descripción de firebase / TubeSock de GitHub: una biblioteca de cliente WebSocket implementada en Java
Autobahn | Android ( GitHub ) Descripción del sitio web: Autobahn | Android es una biblioteca de red de código abierto para Java / Android creada por el proyecto Autobahn que implementa el Protocolo WebSocket y el Protocolo de mensajería de aplicaciones web (WAMP) para crear WebSocket / WAMP móvil nativo clientela. - cloudsurfin señaló que esto no tiene soporte para wss.
Además, hay una biblioteca de cliente socket.io nativa para Android:
- nkzawa / socket.io-client.java Descripción de GitHub: Biblioteca de cliente Socket.IO con todas las funciones para Java, que es compatible con Socket.IO v1.0 y posterior.
Usar el cliente socket.io de Android sería útil para mí, porque de todos modos planeo usar nodejs / socket.io para la interfaz web. Pero el cliente nativo es bastante joven y tiene varios problemas abiertos. Y además de eso, tengo entendido que una aplicación de Android no tiene ningún beneficio de usar la biblioteca del cliente socket.io (además de ser compatible con el servidor socket.io 1.0), porque el soporte de WebSocket puede garantizarse en el lado del cliente .
Mis requisitos son los siguientes:
- Compatibilidad con Android API 9 y superior
- Posibilidad de conectarse a través de SSL
- Mantenga la conexión durante mucho tiempo sin tener que mantener un wakelock permanente
- Compatibilidad con una implementación de servidor websocket nodejs disponible o con socket.io
¿Alguna sugerencia sobre cuál es la biblioteca adecuada para estos requisitos?