在初学者的指南中使用 Server-Sent Events

阅读时长 4 分钟读完

随着 Web 应用程序变得越来越复杂,实时通信变得越来越重要。Server-Sent Events(SSE)是一种用于实时通信的标准,相比其他实时通信技术如 WebSocket 和长轮询(long-polling),它更加简单易用。

本文将介绍什么是 SSE,并且提供使用 SSE 的一些示例代码。

什么是 SSE?

SSE 允许服务器向客户端推送新数据,而客户端无需发送请求。这类似于 WebSocket,但 SSE 比 WebSocket 更加简单且更易于使用。SSE 是一种基于事件流的协议,它使用了 HTTP 协议的长连接,以保持客户端与服务器之间的连接打开。

SSE 可以向客户端推送数据,这些数据包含在具有特定媒体类型(text/event-stream)的响应的文本流中。SSE 的核心是服务器将事件发送到客户端的能力。事件具有跟踪事件 id、事件名称和事件数据字段。

以下是作为 SSE 响应的示例:

这里我们可以看出 SSE 响应的构成:事件数据、事件 ID 和事件名称。

如何使用 SSE?

1. 创建一个 SSE 服务器

在 Node.js 中,使用 http 模块创建一个 SSE 服务器非常简单,只需要在响应头中设置 Content-Type 地方设置为 text/event-stream

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

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

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

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

上面的代码创建了一个 SSE 服务器,该服务器每秒向客户端发送一条消息。

2. 创建一个 SSE 客户端

创建 SSE 客户端同样很简单,只需要在客户端使用 EventSource 类,这个类会自动处理 SSE 事件。

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

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

在客户端代码中,我们使用了 EventSource 构造函数来连接 SSE 服务器,然后使用 addEventListener 方法来处理名为 greeting 的事件。

总结

本文介绍了 SSE 的概念、用法以及如何在 Node.js 中创建 SSE 服务器和在客户端使用 EventSource 类来连接 SSE 服务器。SSE 是在你想实现实时通信的应用程序中,一个很有价值的技术。

当然,还有更多的东西可以挖掘,例如如何发送自定义事件和如何超时等等。我们鼓励你去深入学习 SSE,尝试使用更多的场景来达到更好的使用水平。

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

纠错
反馈