千家信息网

长轮询、WebSocket、服务器发送事件有什么区别

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"长轮询、WebSocket、服务器发送事件有什么区别"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"长轮询、WebSocket、服务器发送事件
千家信息网最后更新 2026年10月31日长轮询、WebSocket、服务器发送事件有什么区别

这篇文章主要介绍"长轮询、WebSocket、服务器发送事件有什么区别"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"长轮询、WebSocket、服务器发送事件有什么区别"文章能帮助大家解决问题。

长轮询、WebSocket和服务器发送事件有什么区别

长轮询,WebSocket和服务器发送事件是客户端和服务器(如Web浏览器和Web服务器)之间流行的通信协议。首先,让我们了解标准HTTP Web请求。以下是常规HTTP请求的一系列事件:

  1. 客户端打开连接并从服务器请求数据。

  2. 服务器计算响应。

  3. 服务器根据打开的请求将响应发送回客户端。

Ajax轮询协议

轮询是绝大多数AJAX应用程序使用的一种标准技术。基本思想是客户端反复轮询(或请求)服务器以获取数据。客户端发出请求,并等待服务器响应数据。如果没有可用数据,则返回空响应。

  1. 客户端使用常规HTTP打开连接并从服务器请求数据。

  2. 所请求的网页以固定间隔将请求发送到服务器(例如0.5秒)。

  3. 服务器计算响应并将其发送回,就像常规HTTP流量一样。

  4. 客户端定期重复上述三个步骤,以从服务器获取更新。

轮询的问题在于客户端必须不断向服务器询问任何新数据。会照成许多空响应,从而造成HTTP开销。

HTTP长轮询协议

这是传统轮询技术的一种变体,该技术允许服务器在数据可用时将信息推送到客户端。使用Long-Polling,客户端可以像正常轮询一样从服务器请求信息,但是服务器可能不会立即响应。这就是为什么这种技术有时被称为"挂起请求"的原因。

  • 如果服务器没有可供客户端使用的任何数据,则服务器将保留请求并等待直到某些数据可用为止,而不是发送空响应。

  • 一旦数据可用,完整的响应将发送到客户端。然后,客户端立即从服务器重新请求信息,以便服务器几乎始终具有可用的等待请求,服务器可以使用该请求来响应事件。

使用HTTP Long-Polling的应用程序的基本生命周期如下:

  • 客户端使用常规HTTP发出初始请求,然后等待响应。

  • 服务器延迟其响应,直到有可用的更新或发生超时为止。

  • 当有可用更新时,服务器会将完整的响应发送到客户端。

  • 客户端通常会在收到响应后立即发送新的长轮询请求,或者在允许的等待时间的暂停后发送新的长轮询请求。

  • 每个长轮询请求都有一个超时。由于超时而关闭连接后,客户端必须定期重新连接。

WebSockets协议

WebSocket提供全双工单个TCP连接上的通信通道。它提供了客户端和服务器之间的持久连接,双方都可以使用该连接随时开始发送数据。客户端通过称为WebSocket握手的过程建立WebSocket连接。如果该过程成功,则服务器和客户端可以随时在两个方向上交换数据。WebSocket协议使客户端和服务器之间的通信具有较低的开销,从而促进了与服务器之间的实时数据传输。通过提供一种标准化的方法,使服务器无需客户端询问即可将内容发送到浏览器,并允许消息在保持连接打开的情况下来回传递。

服务器发送事件协议(SSEs)

在SSEs下,客户端与服务器建立持久的长期连接。服务器使用此连接将数据发送到客户端。如果客户端要向服务器发送数据,则需要使用另一种技术/协议。

  1. 客户端使用常规HTTP向服务器请求数据。

  2. 所请求的网页将打开与服务器的连接。

  3. 只要有新信息可用,服务器就会将数据发送到客户端。

当我们需要从服务器到客户端的实时流量,或者服务器正在循环生成数据并将向客户端发送多个事件时,SSEs最好。

总结

常见的前后端消息通信协议如下:

  • 传统的轮询协议

  • Http长轮询协议

  • WebSockets协议

  • SSEs协议

SSEs协议剖析

其中除了SSEs协议,其他方法大家都很熟悉了,再来看看SSEs到底是个啥?

SSE,即 Server-Sent Events,又叫 EventSource,是一种已被写入 HTML 5 标准的服务端事件推送技术,它允许客户端和服务端之间建立一个单向通道,以让服务端向客户端单方向持续推送事件消息,SSE 适用于不需要从客户端发送数据,但要通过某些服务器操作进行更新的场景,例如股票行情、共享设施更新、好友状态更新等。

上面已经简介过其大致流程了,简单说,所谓SSE,就是浏览器向服务器发送一个HTTP请求,然后服务器不断单向地向浏览器推送"信息"(message)。这种信息在格式上很简单,就是"信息"加上前缀"data: ",然后以"\n\n"结尾。

SSE与WebSocket有相似功能,都是用来建立浏览器与服务器之间的通信渠道。

两者的对比如下:

SSEWebsocket
http 协议,可以直接运行于现有的代理服务器和认证技术独立的 websocket 协议,需要服务器端支持
SSE是单向通道,只能服务器向浏览器端发送。全双工通道,可以双向通信,功能更强
轻量级,实现简单实现相对复杂
默认支持断线重连需要自己实现心跳断线重连
文本传输二进制传输
支持自定义发送的消息类型无

客户端DEMO

服务端DEMO

首先向客户端声明接下来发送的是事件流text/event-stream类型的数据,然后就可以向客户端多次发送消息。事件流是一个简单的文本流,仅支持 UTF-8 格式的编码。每条消息以一个空行作为分隔符。

@RestController public class SSEsController {      //向浏览器发送数据     @RequestMapping(value = "/push", produces = "text/event-stream")     public String push() throws InterruptedException {         String msg = ...;         //固定格式         return "data:" + msg + "\n\n";     } }

关于"长轮询、WebSocket、服务器发送事件有什么区别"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

服务 服务器 客户 客户端 数据 事件 浏览器 消息 浏览 信息 技术 更新 之间 通信 常规 支持 标准 通道 单向 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 广东万易互联网科技有限公司惠州分公司 广州万易互联网科技有限公司 北京路客互联网科技有限公司 没上市的科技互联网公司 互联网 科技 顶级互联网科技成果有哪些 移动互联网科技股 宁夏科技产业互联网案例 港股科技和互联网 彤创互联网科技有限公司 本届互联网博览会上的黑科技 佛山市翊博互联网络科技有限公司 互联网科技创新的路径 世界互联网领先科技成果获奖 恒生互联网科技业指数调整周期 科技互联网海报 江苏互联网智能科技软件 科技互联网公司两年变化 黑龙江互联网科技公司 新华互联网科技学校 互联网最新的科技 易互联网科技有限公司 新华互联网科技2019 互联网科技中介 互联网科技的全部知识 2021互联网科技公司排名 湖北辰鑫科技互联网 美国五大互联网科技公司市值多少 保山浩联互联网科技有限公司
0