Server-Sent Events (SSE) 是一种 Web 技术,用于在服务器和客户端之间实现实时消息通信,SSE 允许服务器向客户端推送事件,而不需要客户端发送请求来获取数据。SSE 适用于实时交互、即时通信等场景,本文将详细介绍 SSE 服务器端的实现步骤。
前置技术
在了解 SSE 服务器端实现步骤之前,需要掌握以下技术:
- Node.js
- Express 或任何其他 Node.js Web 框架
- HTTP 协议
实现步骤
第一步:服务器端建立 HTTP 连接
SSE 是基于 HTTP 协议的,因此我们需要建立一个 HTTP 连接:
-- -------------------- ---- ------- ----- --- - --------------------- --------------- ----- ---- -- - ------------------ - --------------- -------------------- -- ------------- ---------------- ----------- -- ------- ------------- ------------ -- --------- --- ---
第二步:服务器端向客户端发送事件
SSE 采用事件流(Event stream)的形式向客户端发送数据,在服务器端通过 res.write()
方法发送事件:
res.write('event: eventName\n'); // 发送事件名 res.write('data: data\n\n'); // 发送事件数据
其中,event
是事件名称,data
是事件数据,两者之间用 \n
进行分隔,而事件数据之间需要用两个 \n
进行分隔(表示事件结束)。
第三步:客户端监听事件
客户端通过简单地监听浏览器事件来接收服务器端发送的事件,这些事件有以下三种类型:
onopen
:建立连接时触发,通常发送一些初始数据。onmessage
:接收到消息时触发,通常更新页面上的内容。onerror
:出错时触发。
const eventSource = new EventSource('/sse'); eventSource.addEventListener('eventName', (event) => { const data = JSON.parse(event.data); // 处理事件数据 });
至此,SSE 服务器端实现步骤已经介绍完毕,完整代码如下:
-- -------------------- ---- ------- ----- --- - --------------------- --------------- ----- ---- -- - ------------------ - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - ----- ---- - ---------------- -------- ------ ------ --- ----------------- -------------- ---------------- -------------- -- ------ --- -----------------
总结
本文详细介绍了 SSE 服务器端实现的步骤,对于需要实现实时通信、即时更新等功能的应用程序开发十分有用。需要注意的是,SSE 仅适用于服务器向客户端推送数据,如果需要双向通信,需要使用 WebSocket 或其他技术。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d1a882b5eee0b5258e63a3