什么是 SSE (Server-Sent Events)?
Server-Sent Events (SSE) 是一种服务器端向客户端推送实时数据的技术。与 WebSockets 不同,SSE 是单向的(仅服务器到客户端),基于标准的 HTTP 协议,非常适合不需要双向通信的实时场景。
本工具解决的具体问题:
-
AI 流式响应调试:
实时查看 OpenAI 或 Claude 风格的
text/event-stream响应。 - 长连接稳定性测试: 观察浏览器在连接中断后的自动重连机制(Reconnection)。
-
事件类型验证:
区分
message事件和自定义命名事件(Custom Events)。 - 数据解析检查: 自动尝试对推送的 JSON 字符串进行格式化展示。
SSE vs WebSockets:该选哪一个?
| 特性 | SSE (Server-Sent Events) | WebSockets |
|---|---|---|
| 通信方向 | 单向 (Server -> Client) | 双向 (Full Duplex) |
| 协议 | 标准 HTTP | WS 协议 (由 HTTP 升级) |
| 重连机制 | 浏览器原生支持自动重连 | 需手动实现重连逻辑 |
| 防火墙兼容性 | 非常好 (无特殊端口) | 可能需要特殊配置 |
| 数据格式 | 仅支持文本 (通常为 JSON) | 支持文本和二进制 (Binary) |
如何使用此测试工具?
-
输入端点:
在左侧输入您的 SSE 服务器地址(例如
/api/v1/stream)。 -
配置事件:
如果您的服务器发送了特定类型的事件(如
event: update),请在自定义事件中添加。 - 监控数据: 点击“建立连接”,右侧日志区将实时滚动显示接收到的数据。
- 分析结构: 工具会自动识别 ID、Event 和 Data 字段,并显示服务器设置的重试间隔(Retry)。
后端实现参考 (Node.js)
// 简单的 Node.js SSE 服务端实现
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Access-Control-Allow-Origin': '*'
});
setInterval(() => {
res.write(`id: ${Date.now()}\n`);
res.write(`event: message\n`);
res.write(`data: ${JSON.stringify({ time: new Date() })}\n\n`);
}, 1000);