SSE 在 Express 中的应用场景与技巧

阅读时长 5 分钟读完

随着 Web 应用逐渐从传统的多页面应用转变成单页面应用,实时性越来越成为开发者关注的焦点。Server-Sent Events(SSE)是一种实时通信协议,它允许浏览器与服务器之间保持长连接,实现单向的、从服务器向客户端的实时通信。在 Express 中,使用 SSE 可以实现各种实时性需求,包括但不限于异步通知、实时数据推送等。本文将介绍 SSE 在 Express 中的应用场景、使用技巧以及示例代码。

应用场景

SSE 可以应用在如下场景中:

  1. 异步更新:通过 SSE,服务器可以向客户端发送异步更新通知,浏览器端的 UI 可以即时响应。
  2. 实时数据推送:SSE 可以用于将实时数据(比如交易数据、股票数据等)从服务器推送到客户端。
  3. 实时聊天:SSE 可以将聊天信息从服务器实时推送到客户端。

技巧

Express 中启用 SSE

在 Express 中启用 SSE 非常简单。首先,我们需要使用 EventSource 对象建立一个 SSE 连接:

然后,我们需要在服务器端创建一个路由,用于处理 SSE 请求:

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

在服务器端,我们将响应头 Content-Type 设置为 text/event-stream,告诉浏览器这是一个 SSE 响应。然后,我们启动一个定时器,每隔一段时间向客户端发送一条 SSE 消息。最后,我们监听请求的 close 事件,停止定时器。

发送 SSE 消息

服务器端发送 SSE 消息的格式如下:

其中 event-name 是一个字符串,表示消息的类型,event-data 是一个字符串,表示消息的内容。我们可以在客户端通过 EventSource 对象监听 message 事件来接收 SSE 消息:

避免缓存

为了避免客户端缓存 SSE 响应,我们需要在响应头中设置 Cache-Control

处理 SSE 连接中断

如果客户端关闭了 SSE 连接,我们需要在服务器端停止定时器:

示例代码

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

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

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

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

总结

SSE 在 Express 中的应用场景非常广泛,可以用来实现各种实时性需求。在使用 SSE 时,我们需要注意避免客户端缓存和处理 SSE 连接中断。希望本文对您了解 SSE 在 Express 中的应用有所帮助。

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

纠错
反馈