Long Polling + Hessian (Comet)

简单说一下,使用Swing/RCP或其他胖客户端 ---HTTP--->Java Web服务器的
这种情况下,如果服务器有什么消息要“即时”(!=“及时”)通知到客户端时
一样可以使用Long Polling技术,大概的做法如下:

客户端和服务器使用Hessian技术来做,同时客户端使用能够支持Cookie的功能(JDK6+下加1行代码即可)

1>服务端要实现一个事件池,这个事件池能够区分不同用户的事件,服务端一有即时信息要通知客户端,就new一个Event,放入事件池中(事件池能够根据用户id自动为事件排队),并使用notifyAll进行通知action的poll方法

2>客户端使用Hessian调用action一个poll(long timeout)方法,一旦有该用户的事件,poll中的wait方法会被事件池唤醒,poll方法能够从事件池中获得要通知给本用户的那个事件,然后返回,这样就能做到即时告知客户端;如果timeout时间内没有事件,则直接返回null给客户端。
返回给客户端的是一个Event对象,非空情况,里面包含了具体的消息对象(任意Object,只要implements java.io.Serializable);

3>客户端接收到该Event后,能够判断如何处理,然后继续再调用poll(timeout)方法;如果返回的Event为null,那二话不说,也继续调用poll(timeout)

.....
这是我们正在使用的一个设计的基本思想,我们使用时,代码是做了一些必要的封装以便于集中精神做业务开发。

====================
不要自己再开发一个什么TCPServer,一个字母一个字母从Socket代码编写开始
这对服务器、客户端开发人员来说都是复杂的事情,费时费神的事情
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值