最初的 COMET 技术,指的是 HTTP 长轮询,不过,随着时间的推进,许多能实现浏览器即时推送的技术都可被称为 COMET 技术。由我开发的基于 libevent 库的轻量级 COMET 服务器开源项目 icomet,支持主流的浏览器推送技术,并且支持移动端。
最近,在网友的贡献下,icomet 支持了 HTML 5 的 Server-Sent Events(SSE, EventSource) 技术。这项技术也是 W3C 标准之一,详情可见:http://www.w3.org/TR/eventsource/
在支持 HTML 5 的浏览器中使用 SSE,代码会非常简洁,示例如下:
var source = new EventSource("http://127.0.0.1:8100/sse?cname=12&seq=1"); source.onmessage = function(e) { document.body.innerHTML += e.data; };
e.data
就是服务器推送的数据。icomet 项目源码中带有 demo/web/sse.html
脚本,你直接拖到浏览器里即可看运行效果。
源码和示例下载:https://github.com/ideawu/icomet