JavaScript中SSE如何监听服务器发送的自定义事件
时间:2026-08-15 | 作者:冻月看渠 | 阅读:0Ja vaScript监听SSE自定义事件,关键在于两点:服务端严格按event: name+data: content格式发送,客户端再用 addEventListener("name") 精确匹配。同时要注意,事件名大小写敏感,并且建议补上 error 兜底和 close 清理。
在 Ja vaScript 里监听 SSE 的自定义事件,核心就是:服务端消息里必须包含 event: 字段;客户端通过 EventSource.addEventListener("事件名") 监听对应事件。
这里有个很容易踩坑的细节:事件名区分大小写。客户端监听名称必须和服务端 event: 后面的字符串完全一致,一字不差。
服务端要发对格式
SSE 自定义事件不能随意发送。服务端响应必须严格遵循文本流规范。
- 每条消息以
event: your-event-name开头,紧接换行 - 随后是
data:行,可多行,内容为纯文本,通常是 JSON 字符串 - 消息之间用两个换行符
nn分隔 event:和data:不能有空格、多余字符或错位
合法响应示例
event: user-login
data: {"userId": 456, "name": "Bob"}
event: payment-confirmed
data: {"txId": "TX-2026", "amount": 99.9}
客户端用 addEventListener 绑定指定名称
自定义事件不要用 onmessage 或 onxxx 属性方式。它们只识别内置事件,比如 message、error。
自定义事件必须使用 addEventListener。
- 创建连接:
const es = new EventSource("/api/events"); - 监听
user-login:es.addEventListener("user-login", e => { console.log("登录数据:", JSON.parse(e.data)); }); - 监听
payment-confirmed:es.addEventListener("payment-confirmed", e => { /* 处理支付确认 */ }); - 注意:事件名大小写敏感,“User-Login” ≠ “user-login”
别漏掉兜底和错误处理
即使用了自定义事件,也建议保留基础保障,避免连接异常时难以排查。
- 监听
error事件检查连接状态:es.addEventListener("error", () => { if (es.readyState === 0) console.warn("连接已断开"); }); - 可选监听
message作为未命名消息的兜底处理,比如服务端偶尔不带event: - 页面卸载前调用
es.close(),避免内存泄漏
常见踩坑点
很多问题并不复杂,往往都出在格式和命名这些细节上。
- 服务端返回了
Content-Type: text/event-stream,但消息里漏了event:,或写成Event:,大小写错误 - 前端监听名写成
"User-Login",而服务端发的是event: user-login data:后面多了一个空格,或者消息结尾只有一个n而非nn- 没处理
e.data是空字符串或非 JSON 的情况,直接JSON.parse报错
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- JavaScript正则表达式批量处理HTML标签转义与替换方法
- 时间:2026-08-21
-
- JavaScript函数默认参数的精准JSDoc类型注解方法
- 时间:2026-08-21
-
- JavaScript设置Cookie的SameSite属性防范CSRF攻击
- 时间:2026-08-21
-
- JavaScript中BOM如何打开新的浏览器窗口标签
- 时间:2026-08-20
-
- JavaScript微任务队列在事件循环中的执行机制
- 时间:2026-08-20
-
- JavaScript中网络超时如何用流程控制实现中断
- 时间:2026-08-20
-
- JavaScript防抖函数原理与减少高频事件触发方法
- 时间:2026-08-20
-
- TypeScript六个颠覆认知的核心知识点解析
- 时间:2026-08-20
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
