什么是 SSE
SSE(Server-Sent Events)是 HTML5 新增的一种协议,用于服务器向客户端推送数据。与 WebSocket 相比,SSE 的优势在于它使用了 HTTP 协议,不需要像 WebSocket 那样建立全双工通信的连接,而是通过持久化的 HTTP 连接实现了服务器向客户端的单向通信。
SSE 的多路复用
在 SSE 中,服务器可以向客户端推送多个事件流,每个事件流都对应一个 EventSource 对象。如果服务器向多个 EventSource 对象推送数据,就需要实现多路复用。下面介绍两种实现多路复用的方法。
方法一:使用多个 URL
最简单的方法是使用多个 URL,每个 URL 对应一个事件流。这种方法的优点是实现简单,缺点是需要在客户端创建多个 EventSource 对象,增加了网络连接的开销。
以下是示例代码:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------- ------------ ------- ------ ------- ------ ---- -------------------------- ------- ------ ---- -------------------------- -------- --- ------------ - --- ------------------------------- --- ------------ - --- ------------------------------- ---------------------- - --------------- - --------------------------------------------------- -- ---------- - ------- -- ---------------------- - --------------- - --------------------------------------------------- -- ---------- - ------- -- --------- ------- -------
服务器端代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- --------------------------- --------- -- - -- ------------ --- ------------------ - ----------------------- - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - --------------------- ----- ---------------------------- -- ------ - ---- -- ------------ --- ------------------ - ----------------------- - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - --------------------- ----------------------- -- ------ - ---- - ------------------------ --------------- - ----------------
方法二:使用一个 URL
另一种方法是使用一个 URL,每个事件流都使用不同的事件类型。这种方法的优点是只需要创建一个 EventSource 对象,缺点是服务器需要根据事件类型来推送数据。
以下是示例代码:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------- ------------ ------- ------ ------------ ---- ------------------------ -------- --- ----------- - --- ----------------------------- ------------------------------------ --------------- - ------------------------------------------------- -- ---------- - ------- --- -------------------------------------- --------------- - ------------------------------------------------- -- ---------- - ------- --- --------- ------- -------
服务器端代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- --------------------------- --------- -- - ----------------------- - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - ---------------------- ----------- ----- ---------------------------- -- ------ -------------- -- - ---------------------- ------------- ----------------------- -- ------ ----------------
总结
SSE 是一种简单实用的服务器推送技术,它使用 HTTP 协议,不需要像 WebSocket 那样建立全双工通信的连接,而是通过持久化的 HTTP 连接实现了服务器向客户端的单向通信。实现 SSE 的多路复用有多种方法,本文介绍了两种方法,分别是使用多个 URL 和使用一个 URL。在实际应用中,可以根据具体情况选择合适的方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65793ac5d2f5e1655d338481