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:
        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差不多。

更多相关文章

  1. Android原生(Native)C开发之九:OpenGL ES初探
  2. [Android(安卓)编译(一)] Ubuntu 16.04 LTS 成功编译 Android(安
  3. Android(安卓)项目实战视频资料 学习充电必备
  4. Android(安卓)简单计算器源码....
  5. adb的一些命令
  6. Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
  7. Android(安卓)studio 入门教程(案例)
  8. Android(安卓)studio导入eclipse项目
  9. Android事件分发与消费

随机推荐

  1. android DHCP流程
  2. Android运行模式 未验证
  3. Android(安卓)Studio打包,jar,arr,apk
  4. android textview在code(代码)中设置图片
  5. android - Actionbar 上的 MenuItem 的 使
  6. Android之使用硬盘模拟SD卡
  7. rxjava2+okhttp3+retrofit2(请求参数按照
  8. 多个Fragment嵌套
  9. Android(安卓)OpenGL ES 绘图 --简单绘图
  10. Android中定时任务的实现(总结)