-
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
优点:后端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。
实例:适于小型应用。 -
长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
优点:在无消息的情况下不会频繁的请求。
缺点:服务器hold连接会消耗资源。
实例:WebQQ、Hi网页版、Facebook IM。
另外,对于长连接和socket连接也有区分:
-
长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。
优点:消息即时到达,不发无用请求。
缺点:服务器维护一个长连接会增加开销。
实例:Gmail聊天 -
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。
优点:实现真正的即时通信,而不是伪即时。
缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。
实例:网络互动游戏。
以上是四种请求方式的介绍和优缺点比较。
我整理了一些资料,我补充一下工作原理吧
长连接工作原理
从上图可以看出每次数据传送不会关闭连接,连接只会在通信出现错误时,或是连接重建时关闭(一些防火墙常被设置为丢弃过长的连接, 服务器端可以设置一个超时时间, 超时后通知客户端重新建立连接,并关闭原来的连接)。
长轮询工作原理
长轮询是现在最为常用的方式,和长连接方式的区别就是服务器端在接到请求后挂起,有更新时返回连接即断掉,然后客户端再发起新的连接。
他们之间的优缺点就像@刘锡涛所说一样。
当然现在也有正在弥补以上两种不足的第三种方式WebSocket
不管是长连接还是长轮询,其实都只是单向通信,直到WebSocket的出现,才是B/S之间真正的全双工通信。不过目前WebSocket协议仍在开发中,目前Chrome和Safri浏览器默认支持WebSocket,而FF4和Opera出于安全考虑,默认关闭了WebSocket,IE则不支持(包括9),目前WebSocket协议最新的为“76号草案”。有兴趣可以看以下资料
来自:http://lelglin.iteye.com/blog/1846384
相关推荐
资源概要:基于HTTP的长连接,是一种通过长轮询方式实现...本资源介绍了什么是长连接、长轮询以及他们的应用场景和他们的优缺点;并详细讲解其实现原理;然后通过iframe和ajax方式分别程序设计实现长连接、长轮询。
简单的长轮询聊天使用Laravel5和AngularJS的简单的长轮询聊天网络。 创建此存储库仅用于使用angularjs测试laravel5。如何设定#### Create Virtual Host创建2个虚拟主机。 用于Web服务和客户端的两个虚拟主机。 不要...
完整长轮询代码,客户端使用jquery访问后台程序,后台hold住此连接,实时监控数据变化,有变化则返回结果到客户端。此代码使用了异步回调以保证主进程不会形成阻塞。
pushlet简单demo,导入即可运行 Java 推送 长连接 轮询 pushlet comet4j
二:ajax持久连接 + 长轮询 客服端采用第一种方式:iframe + 服务器推技术 思路: 1:新建comentbyiframe.php 该用文件使用while(true)一直连接到服务器不断开. 如果在while的过程中查到了新数据.使用ob_flush推给...
什么是长轮询? 长轮询是“服务器推”技术实现方式的一种,可以将服务端发生的变化实时传送到客户端而无须客户端频繁的地刷新、发送请求。 长轮询原理? 客户端向服务器发送Ajax请求,服务器接收到请求后,保持...
基于长连接的简易聊天室jQuery+.net 2.0 Comet Comet练手,尚有不少bug,还未实现维护用户列表功能 是长连接的不是轮询方式 升级版本 http://download.csdn.net/source/2216847
CPU不断检查连接到其上的每个设备,以侦查是否有任何设备需要硬件注意。 每个设备都有一个指示命令就绪的位,指示该设备的状态,即该命令是否被硬件终止。如果命令位已准备就绪,则该命令已失效;否则,如果该位为...
长轮询向服务器发送请求,保持连接打开,在有“数据”时得到答复。 这将只花费您一个请求(每个用户),但该请求会保持客户端和服务器之间的永久连接。如何使用要测试,只需将 client/client.js 中的 URL 更改为 ...
兼容所有浏览器的长连接源码,低版本浏览器是长轮询,高版本websocket
Web客户端与服务器之间基于Ajax(http)的常用通信方式,分为 短连接 与 长轮询 。 短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。 长轮询:客户端像传统轮询一样从服务器请求...
HTML5 WebSocket实现了...以前的服务器消息推送大部分采用的都是“轮询”和“长连接”技术,这两中技术都会对服务器产生相当大的开销,而且实时性不是特别高。WebSocket技术对只会产生很小的开销,并且实时性特别高
介绍 ... 1、支持客户/服务器模式; 2、简单快速; 3、灵活;...4、无连接;...所以一次的请求都是一个单独的事件,和前后都没有联系。所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长...3、轮询,顾名思义就是
目标:客户端和服务器建立长连接,服务端与客户端可实时收发数据。 原理:使用HTTP协议建立全双工的TCP长连接。 方法:HTML5的WebSocket。 参考:...
带有通知系统和多个服务器更新客户端技术的聊天应用程序,使用Websocket,SSE,短和长-轮询连接网络套接字连接带有通知系统和多个服务器更新客户端技术的聊天应用程序,使用Websocket,SSE,短和长期的轮询-轮询连接...
JQuery实现的无刷新后台取数据的方式,也就消息推送,不同的是,这里列举了三种方式,长连接,长轮询,以及改进以后的长轮询,后台采用java+servlet开发,送一上手,代码齐全.
本项目基于 AJAX 的长轮询方式实现。 CometAsyncService 服务端实现,主要包含Comet实现机制 CometAsyncClient 客户端实现,测试程序 测试截图 Cient是一个模拟即时通讯的一个简单控制台程序,使用方法如下: 1 按"1...
传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上查询最新的数据。种这种拉取数据的方式需要很短的时间间隔才能保证数据的精确度,但太短的时间间隔客服端会对服务器在短时间内发送出多个请求。
只是聊天室 简单方便的聊天设计 去做 定期静音聊天太快 nginx 静态文件过期日期 系统消息 .roominfo 用户幻灯片 ...当nginx在tornado前面resposnes 504 Gateway Timeout时,tornado会处理为“HTTP连接关闭事件”
服务器推送目的比较服务器推送技术解决服务器推送中的负载平衡问题比较短轮询简单的HTTP基本,负载平衡兼容性好发出大量请求,包括大量HTTP标头(浪费) 无需管理连接单面长轮询简单的HTTP基本,负载平衡兼容性好...