如何使用 Node.js 和 Express 实现 Server-sent Events(SSE)?

阅读时长 3 分钟读完

Server-sent Events(SSE)是一种用于实现服务器向客户端推送数据的技术。与传统的轮询方式相比,SSE 可以减少网络带宽的使用,提高应用程序的性能和响应速度。在前端开发中,SSE 可以用于实现实时通知、实时聊天、实时数据更新等功能。本文将介绍如何使用 Node.js 和 Express 实现 Server-sent Events。

SSE 的基本原理

SSE 的基本原理是通过 HTTP 协议的长连接(keep-alive)机制,在服务器端向客户端推送数据。客户端通过 EventSource 对象监听服务器端的数据推送事件,一旦收到数据,就可以进行相应的处理。

SSE 的数据格式是纯文本格式,每个数据块以“data: ”开头,以“\n\n”结尾。示例如下:

在客户端接收到数据后,可以通过 EventSource 对象的 onmessage 事件进行相应的处理。示例代码如下:

使用 Node.js 和 Express 实现 SSE

在 Node.js 中,可以使用第三方模块 express 来实现 SSE。首先,需要安装 express 模块:

然后,在 Express 应用程序中,可以使用 res.writeHead 方法设置响应头,将响应类型设置为“text/event-stream”,并且设置“Cache-Control”头的值为“no-cache”。接着,可以使用 res.write 方法向客户端发送数据,最后使用 res.end 方法结束响应。示例代码如下:

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

--------------- ----- ---- -- -
  ------------------ -
    --------------- --------------------
    ---------------- ----------
  ---

  -------------- -- -
    ---------------- ----- -----------------------------------
  -- ------
---

---------------- -- -- -
  ------------------- ------- -- ---- -------
---

在上面的代码中,通过 setInterval 方法每隔一秒钟向客户端发送一条数据。客户端可以通过 EventSource 对象监听 /sse 路径,一旦收到数据,就会在控制台中输出当前的时间字符串。

总结

本文介绍了如何使用 Node.js 和 Express 实现 Server-sent Events。通过 SSE 技术,可以实现服务器向客户端推送数据,提高应用程序的性能和响应速度。在前端开发中,SSE 可以用于实现实时通知、实时聊天、实时数据更新等功能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e04e681886fbafa4d85fe2

纠错
反馈