我想将服务添加到我的Android应用程序中,该应用程序在后台运行并保持WebSocket连接(可能需要几个小时甚至几天),并定期将一些数据发送到服务器。
现在似乎有一堆用于Java的WebSocket库,但我不确定应该使用哪个库:
GitHub上的 TooTallNate / Java-WebSocket描述:用100%Java编写的准系统WebSocket客户端和服务器实现。http://java-websocket.org/- 这是我搜索“ android websocket”的第一个结果。但是,它有很多未解决的问题,尤其是关于SSL连接的问题,目前似乎还没有得到积极维护。
GitHub上的 koush / AndroidAsync说明:异步套接字,http(客户端+服务器),websocket和android的socket.io库。基于nio,而不是线程。-仍然有许多未解决的问题,但似乎可以维护/解决。
网站上的项目Tyrus说明:JSR 356:WebSocket的Java API-参考实现-由Oracle制造。不确定是否可以在Android中使用。
网站上的 Jetty WebSocket客户端API信息:Jetty还提供了Jetty WebSocket客户端库,可简化与WebSocket服务器的通话。-再说一次:不知道它是否可以在Android中使用。
GitHub上的 codebutler / android-websockets说明:裸露的最低Android websockets(hybi13 / RFC)客户端 -schwiz / android-websocket-example中使用了该客户端,这是StackOverflow问题“如何制作Android设备保持与Internet的TCP连接而没有唤醒锁定? ”。
GitHub上的 Atmosphere / wasync说明:具有后备功能的WebSocket传输Node.js,Android和Java的客户端库 http://async-io.org
TakahikoKawasaki / nv-websocket-client 来自GitHub的描述:Java中的高质量WebSocket客户端实现。
square / okhttp 来自GitHub的描述:适用于Android和Java应用程序的HTTP + SPDY客户端。http://square.github.io/okhttp/ -
它具有的WebSocket模块。如 scorpiodawg所述,OkHttp自3.5版以来具有内置的websocket支持。GitHub上的 firebase / TubeSock描述:用Java实现的WebSocket客户端库
Autobahn | Android(GitHub) 网站上的描述:Autobahn | Android是由Autobahn项目创建的Java / Android开源网络库,该库实现WebSocket协议和Web应用程序消息协议(WAMP)来创建本地移动WebSocket / WAMP客户。- cloudsurfin指出,这对WSS的支持。
此外,还有一个用于Android 的本地socket.io客户端库:
- nkzawa / socket.io-client.java 来自GitHub的描述:Java的全功能Socket.IO客户端库,与Socket.IO v1.0及更高版本兼容。
使用socket.io Android客户端对我来说很方便,因为无论如何我打算将nodejs / socket.io用于Web前端。但是本机客户还很年轻,并且有几个未解决的问题。除此之外,据我了解,Android应用程序没有使用socket.io客户端库的任何好处(除了与socket.io 1.0服务器兼容),因为可以在客户端确保WebSocket支持。
我的要求如下:
- 与Android API 9及更高版本的兼容性
- 通过SSL进行连接的可能性
- 长时间保持连接,而无需保持永久唤醒
- 与可用的nodejs websocket服务器实现或与socket.io的兼容性
有什么建议是适合这些要求的库吗?