如何在 Node.js 环境下使用 SSE?

阅读时长 3 分钟读完

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 模块实现:

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

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

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

2. 处理 SSE 请求

当客户端发送 SSE 请求时,服务器需要将响应头设置为“Content-Type: text/event-stream”,并将连接保持不断开。可以使用 Node.js 内置的 response.write() 方法向客户端发送消息。以下是一个简单的 SSE 请求处理示例:

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

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

上述代码中,当客户端请求“/sse”时,服务器将响应头设置为 SSE 所需的格式,然后使用 setInterval() 方法每秒向客户端发送一条消息。

3. 处理 SSE 客户端

在前端页面中,可以使用 EventSource 对象来接收 SSE 消息。以下是一个简单的 SSE 客户端示例:

上述代码中,使用 EventSource 对象请求“/sse”路径,然后监听 onmessage 事件,当服务器向客户端发送一条消息时,会触发 onmessage 事件,从而输出消息内容。

总结

本文介绍了如何在 Node.js 环境下使用 SSE 实现服务器推送功能。通过以上步骤,可以轻松地实现实时数据推送、消息通知等功能。SSE 尽管功能简单,但在实际应用中具有广泛的应用场景,希望本文能够对您有所帮助。

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

纠错
反馈