`

Comet:基于 HTTP 长连接的“服务器推”技术

阅读更多

转载自:  

《Comet:基于 HTTP 长连接的“服务器推”技术》

http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

 

--------------------------------------------------------------------------

 

到这里,我们可以考虑来写一个简单的聊天室了。这个页面布局非常简单,上面的一个div我们用来放聊天的内容,比如某某某说你好等等,下面有一个输入框一个按钮,用来说话。服务器端也好处理,弄个PHP显示聊天列表,弄个PHP用来接收聊天信息写到数据库中。这样一个简单的聊天室模型就出来了,但是还有让人最头痛的事,那就是如何实时的显示聊天内容呢?

win32socket编程中,比如QQ,我们可以用阻塞的方式等待消息的到来,但是在web编程就没这么简单了,你想到什么解决办法?我比较笨,只想到了AJAX

写一个简单的JavaScript函数,用来异步获取聊天的内容,然后再写个setTimeout方法,调用刚才的AJAX请求,就设置为1秒请求一次。

这种方法虽然简单,但是不但客户端负荷大服务器的负荷也不小,再想想还有什么方法呢?

这种情况下“服务器推”这种技术就非常有用了,看完上面的介绍,相信你已经从字面上可以理解“服务器推”了,这个词叫的非常形象,服务器主动的发出内容,而不需要客户端的请求。

但是对于我们B/S结构,浏览器不发出个请求服务器是不会知道它的存在的,这样又会陷入到一个漩涡中,既然这样我们如何利用“服务器推”呢?

看下题目,我们的解决方法就是建立一个Http长连接。Http长连接有点C/S结构的意思,类似你玩的网游,这种结构的东西都是长时间连接的。有多种方法可以实现,下面我简单介绍两种。

基于 AJAX 的长轮询(long-polling)方式

基于 Iframe htmlfile 的流(streaming)方式

略。。。  请看原文

分享到:
评论
4 楼 leo_soul 2010-09-09  
long polling
和 stream这两种方式你实现过没?
我最近以最简单的方式实现了。不过感觉特别别扭。如果考虑到servlet的多线程,以及数据产生源与servlet之间push的多线程,还有不同b端用户订阅/发送的问题,感觉非常难办。。尤其是多线程,网上有说有的web容器采用nio的方式可以提高并发量。但这样做就无法移植了,只能针对某web容器。
还有,关于事件通知的方法,数据产生源如何通知push部分开始push?我试过2种方式,想了3种方式,根据不同的要求使用不同的通知机制。

具体实现push不知有何好办法?或者贴个简单实现上来研究研究?
3 楼 elf8848 2010-08-29  
leo_soul 写道
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
文章原著是这个。

已经修改了,谢谢
2 楼 leo_soul 2010-08-26  
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
文章原著是这个。
1 楼 Xorcerer 2009-04-30  
突然想起小时候,Windows98时代的聊天室,它们貌似就是不断刷新页面的吧?

相关推荐

    Comet:基于 HTTP 长连接的“服务器推”技术 (实例)

    NULL 博文链接:https://justcoding.iteye.com/blog/1497445

    Comet:基于HTTP长连接的“服务器推”技术[收集].pdf

    Comet:基于HTTP长连接的“服务器推”技术[收集].pdf

    Comet:基于_HTTP_长连接的“服务器推”技术

    Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术

    CometAsync_net:C#实现基于http长连接“服务器推”-Comet技术

    C#实现基于http长连接“服务器推”-Comet技术 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。 本项目基于 AJAX 的长轮询方式实现。 ...

    Comet(Http长连接)

    基于php的服务器推送实例,演示在个客户端之间传递数据!

    基于comet服务器推技术思路的Pushlet技术实现1

    (2)基于Ajax推送Ajax主要是基于浏览器发送异步请求,提高用户操作的响应性 (1)基于 AJAX 的长轮询方式长轮询:HTTP的连接保持,服务器端会阻塞请

    ASP.NET实现comet的聊天交互功能

    借用横刀天笑的解释这个Comet概念:“像彗星那样拖着长长的尾巴的http长连接”。事实上大家都知道,http是不可以与服务器持久连接的,要是每个请求都与服务器持久连接的话,那服务器早就宕掉了,就像前段时间像...

    comet4j.js,comet4j-tomcat6.jar,comet4j-tomcat7.jar

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式 文件包含comet4j-tomcat6.jar , comet4j-tomcat7.jar , comet4j.js...

    comet4j一整套官方出品前后端jar包,js,Demo包

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、...

    comet4j-demo

    Comet4J Comet for Java 是一个纯粹基于AJAX XMLHTTPRequest 的服务器推送框架 消息以JSON方式传递 具备长轮询 长连接 自动选择三种工作模式

    服务推送框架 come4js

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线...

    comet4jDemo

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。

    java websocket

    流技术通常是指客户端使用一个隐藏的窗口与服务端建立一个HTTP长连接,服务端会不断更新连接状态以保持HTTP长连接存活;这样的话,服务端就可以通过这条长连接主动将数据发送给客户端;流技术在大并发环境下,可能会...

    基于WebSocket的实时消息推送的设计与实现.pdf

    全新的HTML5 标准中引入了WebSocket,WebSocket 实现了服务器与浏览器间的双向连接,基于事件方式,效率高,服务器负担轻。本文使用Node.js 平台和Socket.IO 组件设计并实现了WebSocket 实时消息推送网页应用。

    yuliao-PHP.rar_http://yuliao_woaiyl_www. yuliao .com_yuliao6 . c

    4.采用轮询服务器方式传输数据,相比comet方式,服务器压力小许多,而且轮询间隔时间可以调节。 5.显示在线人数 6.敏感词屏蔽 7.基于ip地址的地理位置显示 安装方法: 1.编辑common.php文件,填写数据库连接信息 2....

    apr库(tomcat优化) for native 20

    它又分为BIO Http Connector与NIO Http Connector两种,后者提供非阻塞IO与长连接Comet支持。  AJP Connector, 基于AJP协议,AJP是专门设计用来为tomcat与http服务器之间通信专门定制的协议,能提供较高的通信速度...

Global site tag (gtag.js) - Google Analytics