标签归档:comet

COMET服务器推技术 – 实现Web服务器“主动”向客户端发送数据

      在WEB开发中常常遇到一种需要即时更新内容的情况,比如在线聊天室,基于Web的IM系统或者股票查看系统等等。这些系统无一例外地要求内容更新的及时性。即每次有了新的内容,都必须即时发送给客户端。由于B/S架构的先天特性,即HTTP协议是一种无状态无链接协议,所以要实现服务器端主动发送数据给客户端,传统方法是难以实现的。为了解决这一问题,COMET服务器推技术便应运而生。

      在传统的解决方案中,对页面进行全部或者局部刷新,似乎是解决这一问题的唯一办法。早期基于Web的聊天室一般都采用这种方法。即在页面中插入一个隐藏的iframe,通过这个iframe不断地自动刷新来轮询服务器端以获得最新消息,亦或是采用AJAX技术,每相隔一段时间发起一次HTTP请求来更新内容。但是这种方法缺点是非常明显的。首先,延迟无法避免,没有办法做到完全的及时性。如果我们设定轮询间隔为5s,那么内容更新的最大延迟就会说5s。其次,为了追求及时性,频繁的刷新、轮询,会造成过大的服务器压力。当在线人数很多时,这种方法几乎就是变相的分布式拒绝服务攻击。

      那么有没有一种更加划算的方法呢? 继续阅读