基于 AJAX 的长轮询(long-polling)方式
AJAX 的出现使得 JavaScript 可以调用 XMLHttpRequest 对象发出 HTTP 请求,JavaScript 响应处理函数根据服务器返回的信息对 HTML 页面的显示进行更新。使用 AJAX 实现“服务器推”与传统的 AJAX 应用不同之处在于:
1. 服务器端会阻塞请求直到有数据传递或超时才返回。
2. 客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。
3. 当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。
因为这种方案基于 AJAX,具有以下一些优点:请求异步发出;无须安装插件;IE、Mozilla FireFox 都支持 AJAX。
Mozilla Firefox 提供了对 Streaming AJAX 的支持, 即 readystate 为 3 时(数据仍在传输中),客户端可以读取数据,从而无须关闭连接,就能读取处理服务器端返回的信息。IE 在 readystate 为 3 时,不能读取服务器返回的数据,目前 IE 不支持基于 Streaming AJAX。
Flash XMLSocket
这种方案实现的基础是:
1. Flash 提供了 XMLSocket 类。
2. JavaScript 和 Flash 的紧密结合:在 JavaScript 可以直接调用 Flash 程序提供的接口。
具体实现方法:在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的套接口接口与服务器端的套接口进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示。
Javascript 与 Flash 的紧密结合,极大增强了客户端的处理能力。从 Flash 播放器 V7.0.19 开始,已经取消了 XMLSocket 的端口必须大于 1023 的限制。Linux 平台也支持 Flash XMLSocket 方案。但此方案的缺点在于:
1. 客户端必须安装 Flash 播放器;
2. 因为 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自动穿过防火墙;
3. 因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;
不过这种方案在一些网络聊天室,网络互动游戏中已得到广泛使用。
分享到:
相关推荐
Comet:基于 HTTP 长连接的“服务器推”技术
NULL 博文链接:https://justcoding.iteye.com/blog/1497445
Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 简介
C#实现基于http长连接“服务器推”-Comet技术 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。 本项目基于 AJAX 的长轮询方式实现。 ...
Comet:基于HTTP长连接的“服务器推”技术[收集].pdf
基于长连接的HTTP服务器推送技术 介绍长连接机制和实现方法
(2)基于Ajax推送Ajax主要是基于浏览器发送异步请求,提高用户操作的响应性 (1)基于 AJAX 的长轮询方式长轮询:HTTP的连接保持,服务器端会阻塞请
关于HTTP长连接的“服务器推”技术原理可以查看IBM的这篇文章,我简单的做了个DEMO.
首先是首页,包含一个文本输入和一个显示聊天内容的iframe,还有一个隐藏iframe用来提交form表单: 复制代码 代码如下: <?... charset=utf-8’); ?> <... [removed] function submitChat(obj) { obj.submit();...
针对Android 平台的智能终端在获取推送消息时存在的与服务器端数据同步、费电、耗流量和推送成本高等问题,通过对传统Pull 和Push 方式的简单轮询、短信服务、持久连接和长轮询等四种技术的分析和对Android 平台目前...
资源概要:基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。 本资源介绍了什么是长连接、长轮询以及他们的应用场景和他们的优...
基于爬虫技术的商城商品上新降价实时推送 介绍 基于爬虫技术的商城商品上新降价实时推送,Python编写,爬取对象均为实时交易的国际二手商品商城,特点为一旦商品卖出则该商品不可再被检索到,且商品的上架和价格变化...
本文详细阐述了移动互联网中三种推送技术的原理,通过对它们优缺点和使用场合的分析,探讨了通过XMPP协议保持长久连接方式实现消息推送功能的方法,并针对其实现的关键技术展开了讨论,在开源软件系统0penFi re的...
基于爬虫技术的商城商品上新降价实时推送,Python编写,爬取对象均为实时交易的国际二手商品商城,特点为一旦商品卖出则该商品不可再被检索到,且商品的上架和价格变化十分频繁且具有随机性,对数据处理速度有一定...
紧随“互联网 ”发展前沿,研究适用于移动互联网的信息推送技术。对比多种设计方案,基于消息队列遥测传输协议设计信息推送系统。研发了配置安卓操作系统的手机APP客户端、PHP服务器端,数据库使用MySql,在Windows...
在本文中,我将创建一个简单的基于Web的POP3客户端—它将使用XMLHttpRequest对象检索一个给定邮件服务器中的消息。这个应用程序将使用一个简单的前端来连接到邮件主机,显示消息并实现在消息间的来回导航。在服务器...
服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。客户端请求建立连接,然后服务端收到消息,此次通讯并不会断开,而是一直连接,这样后端也能...