HTML服务器推送技术简介

article/2025/10/3 17:18:00

1. 为什么需要服务器推送?

 

最大的优点:实时

 

适用场景:实时股票价格、商品价格、实时新闻、Twitter/weibo timeline、基于浏览器的聊天系统

 

2. Web交互的发展历程?

 

F5手动刷新 --> AJAX轮询(Polling) --> Comet实时更新 --> HTML5实时通信

 

  随着AJAX的流行,当前大部分网站都采取轮询的方式进行更新,但是这种方式的效率是十分低下的;一方面,服务器端不是总有数据更新,所以每次请求不一定都有更新;另一方面,当发起请求的客户端数量增加,服务器端的接受的请求数量会大量上升,无形中就增加了服务器的压力。

 

  另外,轮询方式的实时性也是不够的,比如基于Web的聊天功能,对实时性要求就很高;于是,comet出现了。Comet是基于HTTP长连接的服务器推送技术,主要有流(streaming)方式和长轮询(long-polling)方式。Comet工作原理:用户发起请求后就挂起,等待服务器返回数据,在此期间不会断开连接。流方式和长轮询方式的区别是:对于流方式,客户端发起连接就不会断开连接,而是由服务器端进行控制。当服务器端有更新时,刷新数据,客户端进行更新;而对于长轮询,当服务器端有更新返回,客户端先断开连接,进行处理,然后重新发起连接。

 

  Comet虽然是一个进步,但是其仍然是单向通信,不能适应Web应用的飞速发展;于是,各种新技术不断涌现,其中WebSocket在Google的力推之下已经成为业界标准,并不断完善中。

 

  下面简单介绍一下Comet的实现方式。

 

3. Comet的实现方式

 

3.1 基于AJAX和基于IFrame的流(streaming)方式


从上图可以看出,每次数据传送不会关闭连接,连接只会在通信出现错误时,或是连接重建时关闭(一些防火墙常被设置为丢弃过长的连接, 服务器端可以设置一个超时时间, 超时后通知客户端重新建立连接,并关闭原来的连接)。

 

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

 

 

从上图可以看出,客户端发出请求后挂起,服务端在接到请求也挂起,等待有更新时返回数据并断掉连接,然后客户端再发起新的连接

 

4. HTML5实时通信

 

4.1 Server-Sent Event,只支持单向的从服务器到客户端的通道

 

  Server-Sent Events实际上将Comet技术进行了标准化,Server-Sent Events规范“定义了API来打开一个HTTP连接,通过该连接能够获取从服务器推送的通知”

 

  Server-Sent Events包含新的HTML元素EventSource和新的MIME类型 text/event-stream,这个MIME类型定义了事件框架格式

 

  EventSource代表的是接收事件的客户端的终点。客户端通过创建EventSource对象来打开一个event stream。创建EventSource对象时,该对象接收一个事件来源的URL作为其构造函数的参数。当每次收到新的事件数据时onmessage事件处理器会被调用

 

  Server-Sent Event是基于HTTP streaming的。如上所述,response会一直打开,当服务器端有事件发生的时候,事件会被写入response中

 

4.2 WebSocket,基于TCP之上定义了帧协议,支持双向的通信

 

 

  WebSocket 是HTML5一种新的协议。它是实现了浏览器与服务器的双向通讯

 

  在 WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送

 

  现在,很多网站为了实现即时通讯,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽和服务器资源。

 

  而比较新的技术去做轮询的效果是Comet,使用了AJAX。但这种技术虽然可达到双向通信,但依然需要发出请求,而且在Comet中,普遍采用了长链接,这也会大量消耗服务器带宽和资源。

 

  面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。


http://chatgpt.dhexx.cn/article/5KpAxXxp.shtml

相关文章

服务器推送技术的研究与应用

3.1服务器推送技术(Server Push) 3.1.1服务器推送技术概述 服 务器推送技术是最近Web技术中最热门的一个流行术语,它是继AJAX之后又一个倍受追捧的Web技术。我们可以认为AJAX解决了单用户响应的问题,而 服务器推送则…

SpringBoot2.0实现服务器主动推送SSE技术

文章目录 一、服务器推送技术二、SpringBoot2.0 实现 SSE 一、服务器推送技术 客户端轮询:Ajax定时拉取服务器主动推送:WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket使得客户端和服务器之间的数据…

服务器推送技术之——SSE

一 点睛 服务器推送技术在日常开发中较为常用。 SSE:Server send Event:服务端发送事件。 本项目推送技术是基于:当客户端向服务端发送请求,服务端会抓住这个请求不放,等有数据更新的时候才返回给客户端&#xff0c…

java web 服务器推送技术--comet4j

1、背景 首先实现服务器推送技术一直一来是B/S应用开发的一块难题,因为是基于HTTP协议的,HTTP协议为无状态,单向性的协议,即,必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客…

服务器之间数据文件推送,数据库数据推送到另外服务器

数据库数据推送到另外服务器 内容精选 换一换 该方案优点是简单,容易上手,缺点是停机时间较长。因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成的数据。由于云数据库RDS服务提供的服务与原来的数据库服务是完全兼容的,所以对于用户来说,从…

服务器推送技术之短轮询、长轮询、SSE和Websocket

服务器推送技术 服务器推送技术干嘛用?就是让用户在使用网络应用的时候,不需要一遍又一遍的去手动刷新就可以及时获得更新的信息。大家平时在上各种视频网站时,对视频节目进行欢乐的吐槽和评论,会看到各种弹幕,当然&a…

【JavaWeb】小白也能看懂的服务器推送技术(WebSocket和SSE)

一.什么是消息推送 推送的场景比较多,比如有人关注我的公众号,这时我就会收到一条推送消息,以此来吸引我点击打开应用。 消息推送(push)通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备APP进行的主动消息推送…

服务器推送技术

目录 1.前序 2.Ajax短轮询 3.Ajax长轮询 4.SSE 5.WebSocket 6.总结 1.前序 服务器推送技术:不用用户刷新发出请求,服务器主动发送实时信息到客户端。 因为HTTP协议是无状态,单向性的协议。 无状态是说客户端每一次请求都是全新的&…

网络编程五-服务器推送技术

目录 一、服务器推送技术 1、服务器推送技术的兴起 2、应用场景 二、Ajax短轮询 1、定义 2、特点 三、Comet 3.1 AJAX 的长轮询 1、定义 2、特点 3.2 SSE 1、定义 2、特点 四、WebSocket通信 1、什么是webSocket 2、特点 3、WebSocket通信握手 4、WebSocket通…

SecureFx连接Linux系统乱码

最近用SecureFx连接Ubuntu时,出现乱码,经过一番查询资料和实验最终得以解决,希望对大家有所帮助。 1、在选项中设置字符编码为UTF-8 Options -- Session Options -- Teminal -- Appearance 2、在选项的全局选项中找到Securefx的配置文件 Opt…

SecureCRT和SecureFx的使用

SecureCRT和SecureFx的使用 1.SecureCRT和SecureFx登陆中文乱码2.SecureFX打开两个窗口,即本地窗口和远程窗口 1.SecureCRT和SecureFx登陆中文乱码 SecureCRT与SecureFX的常规选项里面已经设置成了UTF-8,但是在SecureCRT中新建的中文文件夹,…

SecureCRT SecureFX中文乱码修改问题

1、一般解决方法:修改UFT-8 选项--会话选项--外观--字符编辑--选择UFT-8--确定【有可能需要重启一下CRT】 2、配置文件修改【好用】: 选项--全局选项--常规--配置文件夹【复制配置文件夹路径,选择要修改的ini文件】 将UTF8"00000000修改…

SecureFX传输速度一直是0

今天学往Linux里传jdk和tomcat时发现传输速度一直不动,检查了Linux的网络连接,也正常,如图: 而且连接ip也对,最后突然想到了权限问题,发现自己登录的不是root用户,又败给了自己...

安装SecureCRT和SecureFX踩过得坑

1.下载 给大家提供两种下载途径吧 1.官网可以下载到最新版的,弊端呢就是需要用邮箱注册一下,登录后才能下载,只有三十天的试用期,如果想长久使用的话还得破解一下,稍微的麻烦一丢丢。 2.https://pan.baidu.com/s/18OZ…

SecureFX之激活教程

SecureCRT激活请参考另一篇文章:SecureCRT激活教程 SecureFX激活教程开始: 步骤1:把激活软件放到该软件的安装目录下:(如果找不到安装目录,找到该软件的桌面快捷方式,鼠标右键-----打开文件位…

SecureFx设置密钥登陆

SecureFx设置密钥登陆: 工具,创建公钥下一步密钥类型选RSA 为了更安全,可以设置通行短语 7、将identity.pub上的公钥放到服务器上 ①创建目录 /root/.ssh 并设置权限 [rootlocalhost ~]# mkdir /root/.ssh (mkdir 命令来创建目录) [ro…

解决SecureFX中文乱码的方法

SecureFX出现乱码,解决办法 1.点击Options选项,选择Global Options 2.点击打开Global Options窗口之后,在左边的General选项下方找到Configuration Path并点击,然后在右边找到路径并将它复制下来,如下图中所示。 3.路径…

解决SecureFX无法连接linux服务器

场景描述: 使用SecureFX无法连接linux服务器。 显示:由于目标计算机积极拒绝,无法连接 但使用它的配套软件SecureCRT,却可以进行连接。 问题分析: 既然CRT可以连接,说明Linux服务器本身是没有问题&#…

SecureFX_CRT安装

SecureFX_CRT_9安装和注册 SecureFX_CRT_9下载地址:暂时没放上去,最近有点忙,之后再完善下 一、安装 运行SecureFX_CRT安装程序,安装完之后先注册再运行程序 二、注册 注册SecureFX 1、进入安装的目录(我的安装目录是…

SecureCRTSecureFX Portable远程连接Linux;上传下载文件

SecureCRT和SecureFX都是由VanDyke出品的SSH传输工具。 SecureCRT是一款非常好用的、支持多标签的SSH客户端,极大方便了管理多个SSH会话。 SecureFX则是一款专业而灵活、支持安全文件传输的SFTP客户端,也支持SCP、SSL等安全协议、以及传统的FTP协议。另…