模拟comet的实现

本文没有使用任何comet服务器, 只是利用tomcat模拟实现了一下comet, 不是真正的comet哦,因为不会有这样的应用场景, 只是模拟实现, 仅供参考.

一. 需求.

实现将服务端的时间推送到客户端, 客户端在得到服务端相应后将时间显示在页面上.

二.实现.

1开发框架: 用jsp+servlet的方法, 用了一个webframework框架, 自己写的, 类似于struts2, 可以的话就把它当作struts2来看吧.

2. jsp代码如下

对comet的一些思考

哎, 天朝这么大, 对comet的研究的文章却少之又少. 所以目前我除了知道一些可以实现comet的框架之外, 不知道他们是如何实现的, 可以不可以在现有的app 服务器上做一些框架就可以实现, 而不需要实现什么协议.
comet是基于ajax之上的, 或者说基于httpxmlrequest之上的, 实现原理如下:
客户端:发送XHR请求, 一有数据返回就进行处理并继续发起下一个XHR请求, 如此反复.
服务器端:接到来自客户端的请求后, 不是马上返回数据, 而是阻塞着, 等到有需要返回数据的时候(如数据的更新)才返回给客户端.
客户端的技术很容易做到的, 就一个递归的调用, 但服务器端如何做到等到数据的更新, 我想这里其实可以引入事件模型, 就是服务器端注册一系列的事件, 使用线程侦听事件, 当事件触发的时候设置返回值, 并促发服务器返回数据.
目前在我脑钟有点想法, 画了个草图, 准备找一天把他实现一下, 也不知道这种想法是不是正确的. google comet信息会比较多, 可惜英文比较难读懂呐.汗.

加油!