Server-Sent Events 实现浏览器与服务器实时通信

阅读时长 3 分钟读完

介绍

Server-Sent Events(SSE)是 HTML5 规范中的一种技术,它可以使浏览器与服务器之间建立长连接,实现实时通信。相比于 WebSocket,SSE 更加适用于单向通信的场景,比如服务器向客户端推送实时数据。

SSE 基于 HTTP 协议,使用了 EventSource API,可以在浏览器端通过 JavaScript 监听服务器端推送的消息。与 Ajax 相比,SSE 的优点在于可以实现实时通信,而不需要客户端不停地向服务器发送请求。

实现

服务器端

SSE 的服务器端实现比较简单,只需要在 HTTP 头部设置 Content-Typetext/event-stream,并且每隔一段时间向客户端发送一条消息即可。下面是一个使用 Node.js 实现 SSE 的例子:

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

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

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

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

在上面的例子中,服务器每隔一秒钟向客户端发送一条消息,消息的格式为 data: [message]\n\n,其中 [message] 是要发送的消息内容。

客户端

在客户端,我们可以通过 JavaScript 中的 EventSource API 来监听服务器端发送的消息。下面是一个简单的例子:

在上面的例子中,我们首先创建了一个 EventSource 对象,并指定了服务器端的 URL。然后,我们通过 addEventListener 方法来监听 message 事件,当服务器端发送消息时,就会触发该事件,并且可以通过 event.data 来获取服务器端发送的消息内容。

指导意义

SSE 技术可以用于实现实时通信,比如在聊天室、股票行情等场景中。相比于 WebSocket,SSE 更加轻量级,不需要额外的握手过程,也不需要客户端和服务器之间的双向通信。但是需要注意的是,SSE 只能实现单向通信,服务器端无法接收客户端发送的消息。

结论

Server-Sent Events 是一种实现浏览器与服务器实时通信的技术,基于 HTTP 协议,使用了 EventSource API。相比于 WebSocket,SSE 更加轻量级,适用于单向通信的场景。在实际应用中,我们可以使用 Node.js 等服务器端技术来实现 SSE,同时在客户端使用 JavaScript 监听服务器端发送的消息。

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

纠错
反馈