其实android也可以使用jetty的comet客户端
16lz
2021-01-24
jetty提供了一整套comet方案,cometd2.0也是建立在jetty的httpclient基础上的。虽然nio是android不支持的,但是仍然可以使用socket来完成comet client.
最好是全部使用源码,这样好调试,也好改,虽然不便升级。
jetty client选用7.1.6,可以从eclipse下载全部源码,真正需要的是jetty-client, jetty-io, jetty-http, jetty-util
把这些源码取出,直接放入项目src
cometd2.0可以从 http://cometd.org/ 下载,需要的是bayeux-api, cometd-java-client, cometd-java-common ,把源码取出,直接放入项目src
jetty实际上还需要slf4j log,去 http://www.slf4j.org/android/ 下载android下可用的,但要注意运行起来log name有长度限制,要对jetty util里作些修改。
org.eclipse.jetty.util.log.Slf4jLog.Slf4jLog() 把名字改短就行。
android项目里一定放入internet权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
不放的话不会报错,但永远也连不上。
连接代码比较多,要注意的是开头初始化,要强制使用socket:
如何使用comet可以参见例子:cometd-java-examples ,包含在comet2.0里,网站上的文档是1.0的,相差太远。
使用起来的感觉与socket直连差不多,甚至api上更方便,服务端可以用jetty也可以用tomcat,我是使用grails+plugin,很方便。
异步比较好的方式是 cometd client + cometd server + jms
jms可以在处理结果后发channel回client去。client基本上可以立刻收到。
这样的模式如果直接上web,只要将cometd client换成js就行了,直接有jquery+cometd client,使用起来跟java差不多。
最好是全部使用源码,这样好调试,也好改,虽然不便升级。
jetty client选用7.1.6,可以从eclipse下载全部源码,真正需要的是jetty-client, jetty-io, jetty-http, jetty-util
把这些源码取出,直接放入项目src
cometd2.0可以从 http://cometd.org/ 下载,需要的是bayeux-api, cometd-java-client, cometd-java-common ,把源码取出,直接放入项目src
jetty实际上还需要slf4j log,去 http://www.slf4j.org/android/ 下载android下可用的,但要注意运行起来log name有长度限制,要对jetty util里作些修改。
org.eclipse.jetty.util.log.Slf4jLog.Slf4jLog() 把名字改短就行。
android项目里一定放入internet权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
不放的话不会报错,但永远也连不上。
连接代码比较多,要注意的是开头初始化,要强制使用socket:
HttpClient httpClient = new HttpClient(); httpClient.setIdleTimeout(5000); //缺省改为block socket httpClient.setConnectorType(HttpClient.CONNECTOR_SOCKET); httpClient.setMaxConnectionsPerAddress(100);ClientTransport clientTransport = LongPollingTransport.create(null, httpClient);client = new BayeuxClient(url, clientTransport);
如何使用comet可以参见例子:cometd-java-examples ,包含在comet2.0里,网站上的文档是1.0的,相差太远。
使用起来的感觉与socket直连差不多,甚至api上更方便,服务端可以用jetty也可以用tomcat,我是使用grails+plugin,很方便。
异步比较好的方式是 cometd client + cometd server + jms
jms可以在处理结果后发channel回client去。client基本上可以立刻收到。
这样的模式如果直接上web,只要将cometd client换成js就行了,直接有jquery+cometd client,使用起来跟java差不多。
更多相关文章
- Android原生(Native)C开发之九:OpenGL ES初探
- [Android(安卓)编译(一)] Ubuntu 16.04 LTS 成功编译 Android(安
- Android(安卓)项目实战视频资料 学习充电必备
- Android(安卓)简单计算器源码....
- adb的一些命令
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- Android(安卓)studio 入门教程(案例)
- Android(安卓)studio导入eclipse项目
- Android事件分发与消费