Desejo adicionar um Serviço ao meu aplicativo Android, que é executado em segundo plano, mantendo uma conexão WebSocket (possivelmente por várias horas ou até dias) e envia regularmente alguns dados para um servidor.
Agora, parece haver várias bibliotecas WebSocket para Java, e não tenho certeza de qual delas devo usar:
TooTallNate / Java-WebSocket Descrição do GitHub: Uma implementação de cliente e servidor WebSocket barebones escrita em 100% Java. http://java-websocket.org/ - Este está vinculado no meu primeiro resultado ao pesquisar no "android websocket" . No entanto, ele tem alguns problemas em aberto, principalmente sobre conexões SSL, e não parece ser mantido ativamente no momento.
koush / AndroidAsync Descrição do GitHub: Soquete assíncrono, http (cliente + servidor), websocket e biblioteca socket.io para android. Baseado em nio, não em threads. - Novamente, muitas questões em aberto, mas parecem ser ativadas / mantidas / trabalhadas.
Descrição do Projeto Tyrus no site: JSR 356: API Java para WebSocket - Implementação de Referência - Isso é feito pela Oracle. Não tenho certeza se funciona no Android.
Informações sobre a API do Jetty WebSocket Client no site: O Jetty também fornece uma biblioteca cliente do Jetty WebSocket para escrever, facilitando a conversa com os servidores WebSocket. - Novamente: não tenho certeza se funciona no Android.
codebutler / android-websockets Descrição do GitHub: Cliente mínimo de websockets (hybi13 / RFC) para Android - este é usado no exemplo schwiz / android-websocket , que é a resposta aceita para a pergunta StackOverflow " How to make the O dispositivo Android mantém uma conexão TCP com a Internet sem o bloqueio de ativação? ".
Atmosfera / wasync Descrição do GitHub: WebSockets com fallback transporta a biblioteca do cliente para Node.js, Android e Java http://async-io.org
TakahikoKawasaki / nv-websocket-client Descrição do GitHub: Implementação de cliente WebSocket de alta qualidade em Java.
square / okhttp Descrição do GitHub: Um cliente HTTP + SPDY para aplicativos Android e Java. http://square.github.io/okhttp/ -
Possui um módulo Websocket .Conforme mencionado por scorpiodawg , o OkHttp tem suporte embutido para websocket desde a versão 3.5.firebase / TubeSock Descrição do GitHub: Uma biblioteca cliente WebSocket implementada em Java
Autobahn | Android ( GitHub ) Descrição do site: Autobahn | Android é uma biblioteca de rede de código aberto para Java / Android criada pelo projeto Autobahn que implementa o WebSocket Protocol e o Web Application Messaging Protocol (WAMP) para criar WebSocket / WAMP móvel nativo clientes. - cloudsurfin apontou que isso não tem suporte para o wss.
Além disso, há uma biblioteca cliente socket.io nativa para Android:
- nkzawa / socket.io-client.java Descrição do GitHub: Biblioteca cliente Socket.IO completa para Java, compatível com o Socket.IO v1.0 e posterior.
Usar o cliente Android socket.io seria útil para mim, porque planejo usar o nodejs / socket.io para o front-end da Web de qualquer maneira. Mas o cliente nativo é bastante jovem e possui vários problemas em aberto. Além disso, entendo que um aplicativo Android não tem nenhum benefício em usar a biblioteca cliente socket.io (além de ser compatível com o servidor socket.io 1.0), porque o suporte ao WebSocket pode ser garantido no lado do cliente .
Meus requisitos são os seguintes:
- Compatibilidade com a API Android 9 e superior
- Possibilidade de conectar via SSL
- Mantenha a conexão por um longo tempo sem ter que segurar um wakelock permanente
- Compatibilidade com uma implementação disponível do servidor nodejs websocket ou com socket.io
Alguma sugestão de qual é a biblioteca certa para esses requisitos?