javascript sse 支持通过 event: 字段定义自定义事件名,客户端用 addeventlistener 监听对应名称(如 user-update、notification),每条消息以空行结束,事件名区分大小写且不可含空格或控制字符。

在 JavaScript 的 SSE(Server-Sent Events)中,服务器可以通过 event: 字段发送自定义事件名,客户端用 addEventListener 监听对应名称即可,无需依赖 onmessage。
服务端发送带 event 名的消息
SSE 响应体中每条消息可包含 event: 行,后接自定义事件名(如 user-update、notification),再跟 data: 内容。注意:每条消息以空行结束。
示例响应片段:
data: {"id": 123, "name": "Alice"}
event: notification
data: {"title": "新消息", "body": "你有一条未读"}
客户端用 addEventListener 监听指定事件
创建 EventSource 实例后,调用 addEventListener(事件名, 回调) 即可只接收该类型消息。默认的 message 事件仍可监听无 event: 的普通消息。
- 监听
user-update:只触发含event: user-update的消息 - 监听
notification:只处理通知类消息 - 不监听的事件名会被自动忽略,不影响其他监听器
完整客户端示例
以下代码同时监听两种自定义事件,并处理 JSON 数据:
const es = new EventSource("/sse");es.addEventListener("user-update", (e) => {
const data = JSON.parse(e.data);
console.log("用户更新:", data);
});
es.addEventListener("notification", (e) => {
const data = JSON.parse(e.data);
alert(data.title);
});
// 可选:监听连接打开或错误
es.onopen = () => console.log("SSE 连接已建立");
es.onerror = (err) => console.error("SSE 错误:", err);
注意事项
自定义事件名区分大小写,且不能包含空格或控制字符;服务端需确保每条消息格式合法(event: 和 data: 后必须换行,空行分隔);客户端监听前连接必须已建立,否则可能错过首条消息。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











