新闻中心
什么是j*ascript服务器推送_Server-Sent Events如何工作?
SSE 是服务器单向持续推送数据的轻量级 HTTP 机制。基于长连接,服务器保持响应打开并按 data: 格式写入,客户端用 EventSource监听;需设置 text/event-stream 响应头、正确换行,支持自动重连与自定义事件。

J*aScript 服务器推送(Server-Sent Events,SSE)是一种让服务器**单向、持续地向浏览器发送数据**的轻量级机制。它不是双向通信(不像 WebSocket),也不依赖轮询(不像传统 AJAX 轮询),而是基于 HTTP 的长连接,由服务器主动“推”数据给客户端。
Server-Sent Events 的核心原理
SSE 基于一个持久的 HTTP 连接:浏览器发起一次 GET 请求,服务器保持连接打开,并在有新数据时,按特定格式逐条写入响应流。浏览器内置的 EventSource API 自动解析这些数据,触发事件。
关键点:
- 协议是纯文本,每条消息以 data: 开头,可选带 id:(用于断线重连)、event:(自定义事件名)、retry:(重连间隔毫秒)
- 服务器必须设置响应头:Content-Type: text/event-stream 和 Cache-Control: no-cache
- 连接默认在断开后自动重试(约 3 秒),支持手动关闭
- 只支持服务器 → 浏览器方向,适合实时通知、日志流、股票行情等场景
前端怎么用 EventSource?
只需创建 EventSource 实例,监听事件即可:
<script><br> const source = new EventSource("/api/notifications");<br> <br> source.onmessage = function(event) {<br> console.log("收到普通消息:", event.data);<br> };<br> <br> source.addEventListener("update", function(event) {<br> console.log("收到 update 类型消息:", event.data);<br> });<br> <br> source.onerror = function(err) {<br> console.error("SSE 连接出错", err);<br> };<br> </script>
注意:EventSource 只支持 GET,不携带 Cookie(除非显式配置 withCredentials: true),且跨域需服务器返回 Access-Control-Allow-Origin。
Musho
AI网页设计Figma插件
76
查看详情
后端如何发送 SSE 数据?(以 Node.js Express 为例)
关键是保持响应不结束、正确设置头部、按格式输出:
app.get('/api/notifications', (req, res) => {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
});
// 发送一条消息
res.write('data: {"msg": "欢迎连接"}\n\n');
// 每 2 秒推送一次更新
const interval = setInterval(() => {
res.write(`data: {"time": "${new Date().toISOString()}"}` + '\n\n');
}, 2000);
req.on('close', () => {
clearInterval(interval);
res.end();
});
});
真实项目中建议使用流式响应工具(如 Express 的 res.flush() 或更可靠的库如 sse-express)来确保数据及时写出,避免缓冲阻塞。
基本上就这些。SSE 不复杂但容易忽略响应头和换行格式——只要服务端按规范吐数据,前端用 EventSource 监听,就能实现低延迟、低开销的服务器推送。
以上就是什么是j*ascript服务器推送_Server-Sent Events如何工作?的详细内容,更多请关注其它相关文章!
# 按需
# 辽源网站优化报价表
# 宝洁营销推广案例
# 上市公司建设网站有哪些
# 伊春seo
# 个人企业网站建设
# 南充定制网站建设优化
# 关键词挖掘网站排名优化
# 德清网站推广公司
# seo首荐11火星
# 时代seo优化靠谱吗
# 是一种
# 也不
# 加载
# 客户端
# 换行
# javascript
# 点对点
# 自定义
# 不像
# 如何实现
# acces
# app
# 浏览器
# cookie
# node
# ajax
# node.js
# 前端
# js
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】
Node.js中HTML按钮与J*aScript函数交互的正确姿势
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
拼多多赚钱渠道_拼多多收益来源
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
outlook中文官网入口地址 outlook官方中文版直达首页链接
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
12306选座怎么选到临时改签座_12306改签选座策略与步骤
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension
批改网学生版PC登录 批改网官网登录系统入口
印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
随机参数递归函数的基准调用次数与时间复杂度探究
顺丰快递查询系统 官方正版查询入口
J*a最大堆Heapify方法修复:索引计算与边界条件深度解析
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
淘宝网网页版登录入口 淘宝官方网页版快捷登录
高德地图怎么看全景照片_高德地图全景照片浏览教程
网易大神账号申诉需要多久_网易大神账号申诉流程说明
C++如何操作注册表_Windows平台下C++读写注册表的API函数详解
微博网页版官方账号登录 微博网页版内容浏览使用指南
动漫岛观看全网网 动漫岛在线正版动漫入口
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
将JSON对象数组转置为键值对列表的实用指南
12306选座怎么选到特殊座位_12306特殊座位选择注意事项
护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?
TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
Go语言中动态执行代码字符串的策略与实践
微信网页版登录教程_微信网页版登录入口在哪
TikTok网页版直接登录 TikTok网页端官方平台入口
解决Python单元测试中Mock异常方法调用计数为零的问题
12306几点到几点不能订票? | 官方最新系统维护时间全解析
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|
Go Martini框架:动态服务解码后的图片内容
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
Angular中单选按钮的正确使用与常见陷阱解析
c++项目目录结构应该如何组织_c++工程化项目结构规范
Golang如何优雅处理error_Golang error处理最佳实践总结
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图


2025-12-13
浏览次数:次
返回列表
监听;需设置 text/event-stream 响应头、正确换行,支持自动重连与自定义事件。