x-r*_*ray 124 android websocket node.js
我想在我的Android应用程序中添加一个服务,该应用程序在后台运行,持有WebSocket连接(可能需要几个小时甚至几天),并定期将一些数据发送到服务器.
现在似乎有一堆用于Java的WebSocket库,我不确定应该使用哪一个:
来自GitHub的 TooTallNate/Java-WebSocket描述:用100%Java编写的准系统WebSocket客户端和服务器实现.http://java-websocket.org/ - 这是我在google搜索"android websocket"的第一个结果中链接的.但是,它有很多未解决的问题,尤其是关于SSL连接的问题,目前似乎没有积极维护.
来自GitHub的 koush/AndroidAsync描述:用于android的异步套接字,http(客户端+服务器),websocket和socket.io库.基于nio,而不是线程. - 许多公开问题,但似乎是维持/工作的活动.
项目Tyrus 来自网站的描述:JSR 356:用于WebSocket的Java API - 参考实现 - 这是由Oracle完成的.不确定它是否适用于Android.
来自网站的 Jetty WebSocket客户端API信息:Jetty还提供了一个Jetty WebSocket客户端库,可以更轻松地与WebSocket服务器进行通信. - 再次:不确定它是否适用于Android.
codebutler/android-websockets 来自GitHub的描述: Android的裸网最小websockets(hybi13/RFC)客户端 - 这个用于 schwiz/android-websocket-example,这是StackOverflow问题的接受答案"如何制作Android设备是否在没有唤醒锁定的情况下保持与Internet的TCP连接? "
来自GitHub的 Atmosphere/wasync描述:带有回退的WebSockets传输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是一个用于Java/Android的开源网络库,由Autobahn项目创建,实现WebSocket协议和Web应用程序消息传递协议(WAMP),用于创建本机移动WebSocket/WAMP客户端.- cloudsurfin指出,这不支持wss.
此外,Android 还有一个原生的socket.io客户端库:
使用socket.io Android客户端对我来说很方便,因为我计划使用nodejs/socket.io作为web前端.但本土客户很年轻,有几个未解决的问题.除此之外,我的理解是Android应用程序没有使用socket.io客户端库的任何好处(除了与socket.io 1.0服务器兼容),因为可以在客户端确保WebSocket支持.
我的要求如下:
对于这些要求,哪一个是正确的库?
Tak*_*aki 121
一些笔记.
Project Tyrus适用于Android,但要确保其许可证(带有CPE的CDDL 1.1和GPL 2)及其大小(使用ProGuard减少WebSocket客户端jar大小)符合您的要求.另请注意,当文本大小很大时,Tyrus可能会抛出异常(这可能是一个错误).请参阅此了解详情.
Jetty:一个2年前在jetty-users邮件列表中的电子邮件帖子说:"我们目前没有Android兼容的Jetty 9 WebSocket客户端.有计划尝试将Jetty WebSocket客户端从JDK 7反向移植到JDK 5/6 for android使用,但它的优先级低于完成JSR-356 Java WebSocket API(javax.websocket)的实现." Jetty目前关于其WebSocket Client API的文档没有提及有关Android的任何内容.
codebutler/android-websocket不执行RFC 6455所要求的结束握手,并且可能在关闭时抛出异常.看到这个.
Atmosphere/wasync使用AsyncHttpClient/async-http-client作为其WebSocket实现.因此,应该提到AsyncHttpClient/async-http-client.
firebase/TubeSock无法验证Sec-WebSocket-Accept.这违反了RFC 6455.此外,TubeSock在构建短信时存在错误.如果您对文本消息使用多字节UTF-8字符,您迟早会遇到该错误.见第3期在喜悦-IM/Android的DDP约TubeSock问题的一个长长的清单.
选择用Java编写的WebSocket客户端实现的注意事项:
SSLSocketFactory并且SSLContext应该能够在没有不必要限制的情况下使用.Socket.connect(SocketAddress endpoint, int timeout)nv-websocket-client涵盖了除最后两个之外的所有内容.此外,它的一个小而方便的功能是定期发送ping/pong帧.它可以通过调用setPingInterval/setPongIntervalmethods来实现(参见 JavaDoc).
免责声明:Takahiko Kawasaki是nv-websocket-client的作者.
| 归档时间: |
|
| 查看次数: |
59105 次 |
| 最近记录: |