Server-Sent Events(SSE)是一种轻量级的、基于HTTP的服务器推送技术,它允许服务器向客户端发送单向的、连续的、自动更新的数据流。在前端开发中,SSE通常用于实现实时数据推送、消息通知等功能。本文将介绍如何在 Node.js 环境下使用 SSE。
SSE 基本原理
SSE 基于 HTTP 协议,使用长连接(Long Polling)技术,客户端向服务器发送一个 HTTP 请求,服务器在请求处理完成后保持连接不断开,随时可以向客户端发送消息。SSE 的消息格式为纯文本,以“data: ”开头,以“\n\n”结尾,中间包含需要传递的数据。
SSE 使用步骤
1. 创建一个 HTTP 服务器
首先,需要创建一个 HTTP 服务器,可以使用 Node.js 内置的 http 模块实现:
// javascriptcn.com 代码示例 const http = require('http'); const server = http.createServer((req, res) => { // TODO: 处理请求 }); server.listen(3000, () => { console.log('Server listening on port 3000'); });
2. 处理 SSE 请求
当客户端发送 SSE 请求时,服务器需要将响应头设置为“Content-Type: text/event-stream”,并将连接保持不断开。可以使用 Node.js 内置的 response.write() 方法向客户端发送消息。以下是一个简单的 SSE 请求处理示例:
// javascriptcn.com 代码示例 const server = http.createServer((req, res) => { if (req.url === '/sse') { res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); setInterval(() => { const data = `data: ${new Date().toLocaleTimeString()}\n\n`; res.write(data); }, 1000); } else { res.writeHead(404); res.end(); } });
上述代码中,当客户端请求“/sse”时,服务器将响应头设置为 SSE 所需的格式,然后使用 setInterval() 方法每秒向客户端发送一条消息。
3. 处理 SSE 客户端
在前端页面中,可以使用 EventSource 对象来接收 SSE 消息。以下是一个简单的 SSE 客户端示例:
const eventSource = new EventSource('/sse'); eventSource.onmessage = (event) => { console.log(event.data); };
上述代码中,使用 EventSource 对象请求“/sse”路径,然后监听 onmessage 事件,当服务器向客户端发送一条消息时,会触发 onmessage 事件,从而输出消息内容。
总结
本文介绍了如何在 Node.js 环境下使用 SSE 实现服务器推送功能。通过以上步骤,可以轻松地实现实时数据推送、消息通知等功能。SSE 尽管功能简单,但在实际应用中具有广泛的应用场景,希望本文能够对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6584768fd2f5e1655df203c2