Server-sent Events 推送默认信息

阅读时长 4 分钟读完

介绍

Server-sent Events (SSE) 是一种用于在客户端和服务器之间实现实时双向通信的技术。相比于 WebSocket,SSE 更加简单易用,并且可以兼容性更好,因为它是基于 HTTP 协议的。

SSE 允许服务器向客户端发送事件流,而客户端可以通过 EventSource API 来订阅这些事件流并处理它们。这种通信方式的优点在于它不需要客户端发起请求,而是通过长连接,服务器可以持续向客户端发送事件流。

使用

服务端

在服务端,我们可以使用 Node.js 的 http 模块来创建一个 HTTP 服务器,并在请求时返回 SSE 事件流。下面是一个简单的例子:

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

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

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

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

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

在这个例子中,我们创建了一个 HTTP 服务器,并在请求时返回了一个 text/event-stream 类型的响应。在响应中,我们可以使用 data 字段来发送事件数据,每个事件之间需要以 \n\n 分隔符隔开。

在这个例子中,我们使用 setInterval 函数来每秒钟发送一个 ping 事件。

客户端

在客户端,我们可以使用 EventSource API 来订阅服务器发送的事件流,并在收到事件时进行处理。下面是一个简单的例子:

在这个例子中,我们创建了一个 EventSource 对象,并指定了服务器的 URL。当服务器发送事件时,我们可以通过 onmessage 回调函数来处理事件数据,并在控制台中输出。

实例

下面是一个完整的例子,它可以在客户端上显示当前时间,并在服务器上每秒钟更新一次时间:

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

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

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

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

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

在这个例子中,我们在客户端上显示一个当前时间的标题,并使用 EventSource API 来订阅 /time 路径上的事件流。在服务器端,我们创建了一个 /time 路径,用于每秒钟发送一个包含当前时间的事件数据。

总结

Server-sent Events 是一种非常有用的技术,可以用于实现实时双向通信。相比于 WebSocket,SSE 更加简单易用,并且可以兼容性更好,因为它是基于 HTTP 协议的。我们可以使用 Node.js 的 http 模块来创建一个 SSE 服务器,并在客户端上使用 EventSource API 来订阅事件流。

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

纠错
反馈