HTTP服务器推送(HTTP server push)
HTTP服务器推送(也称为HTTP streaming)是一个从Web服务器发送数据到Web浏览器的机制。 HTTP服务器推送可以通过几种机制来实现。
一般来说,Web服务器不响应终止后,已送达数据连接到客户端。该网站的服务器连接叶片等开放,如果接收到事件时,可以立即被发送到一个或多个客户端。否则数据将被排队,直到客户端的下一个请求被接收。大多数Web服务器通过CGI提供这一功能(例如非解析头在Apache脚本)。
另一种机制是与一种特殊的MIME类型,称为多重/的X -混合取代,这是由Netscape在1995年。 Web浏览器将其解释为改变每当服务器就像推一个新版本的文件到客户端感受到这一点。它仍然支持由Firefox,Opera和Safari的今天,但传统上由微软忽略。可以应用到HTML文件,也为串流影像的摄像头应用。
1.0 Web应用程序的WHATWG建议包括一种机制来推送内容给客户端。 9月1日,2006年,Opera网络浏览器执行了这项新的实验技术的功能称为“服务器发送的事件。”人们现在正作为HTML5的一部分规范化。另一个HTML5的相关部分是WebSockets API,它允许Web服务器和客户端通信通过一个全双工TCP连接。
Java pushlet
原本是一个pushlet开发Java Web应用程序,虽然同样的技术可以在其他web框架,以及聘请的技术。在这种技术中,服务器需要持久HTTP连接响应的优势,永远离开了“开放”(即它永远不会终止反应),将有效地愚弄“装入”模式继续浏览器的初始页面加载后,通常是完整的。然后,服务器发送的JavaScript片段定期更新网页内容,从而实现推动能力。通过使用这一技术并不需要在客户端的Java小应用程序或其他插件保持开放的连接到服务器。该客户端将自动通知由服务器推向新的事件。一个严重的缺点,这种方法,然而,缺乏控制在浏览器中的服务器超时。一个页面刷新总是必要的,如果在浏览器上超时结束时发生。
Long polling
Long polling是一种传统的轮询技术的变化,并允许一个信息推送仿真从服务器到客户端。随着Long polling,客户端请求从一个类似的方式到正常的投票服务器的信息。但是,如果服务器没有发送一空,而不是任何反应为客户提供的信息,服务器保存请求,并等待一些信息可用。一旦信息变得可用(或之后一个合适的超时),一个完整的响应被发送到客户端。然后,客户端通常会立即重新从服务器请求信息,因此服务器将几乎总是有一个可用的等待请求,它可以使用,以期在响应事件的数据。在web / AJAX的背景下,Long polling也被称为Comet programming。
Long polling本身并不是一种推送技术,但可以根据实际情况推动使用。
Flash XMLSocket relay
这种技术是由cbox等聊天应用,使得XMLSocket对象使用一个单像素的Adobe Flash电影。在JavaScript的控制,客户端建立一个服务器上的一个单向传递TCP连接。中继服务器不读取这个插座什么,而是立即向客户机发送一个唯一的标识符。接下来,客户端发出一个HTTP请求到Web服务器,包括它这个标识符。 Web应用程序可以然后推给了继电器的服务器,它在闪光灯插座继电器他们的本地接口的客户端的消息。这种方法的优点是它赞赏自然读写不对称,是许多Web应用程序,包括聊天典型,因此它提供了高效率。由于它不接受即将离任的插座上的数据,中继服务器不需要轮询都传出TCP连接,从而能够容纳数千的并发连接打开数万。在此模型中,规模限制是TCP协议栈底层的服务器操作系统。
其它技术
Comet一词已被用于描述应用到Ajax的Web应用程序推技术。这是用于Web技术的结合,如HTTP服务器推送和Long polling(见上文)作为总称。
XMPP是通常用于推送应用程序以及,特别是PubSub的扩展。苹果公司使用其移动我推支持这项技术。
波什是一项长期的HTTP技术在XMPP使用,但可以在网络上使用。该规范(XEP - 0124:双向,在同步的HTTP(波什)流)条规定:本规范定义了一个传输协议,它模仿了一个长寿命,双向两个实体之间的TCP(如客户端和服务器)连接的语义通过有效地使用,而不需要频繁轮询或使用多个分块同步响应HTTP请求/响应对。