Server-sent Events 和轮询:你更喜欢哪一个?

阅读时长 3 分钟读完

在 Web 应用程序中,实时性对于用户体验来说非常重要。为了实现实时性,常常使用轮询和 Server-sent Events 技术。本文将详细介绍这两种技术的优缺点,以及如何在前端中使用它们。

轮询

轮询是一种常见的技术,用于定期向服务器发送请求以获取最新数据。在轮询中,浏览器定期向服务器发送 HTTP 请求,服务器返回最新数据。这种技术的优点是它可以在所有浏览器上运行,因为它只使用标准的 HTTP 请求和响应。

下面是一个使用轮询的示例代码:

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

轮询的缺点是它会消耗大量的网络带宽和服务器资源,因为浏览器需要定期发送请求以获取最新数据。此外,轮询的实时性也不是很好,因为它只能在特定的时间间隔内获取数据,而无法即时获取数据。

Server-sent Events

Server-sent Events 是一种新的技术,用于在浏览器和服务器之间建立长连接,以便服务器可以向浏览器发送实时数据。在 Server-sent Events 中,浏览器向服务器发送一个 HTTP 请求,服务器将响应保持打开状态,并在有新数据时向浏览器发送数据。这种技术的优点是它可以实现即时通信,并且不需要浏览器定期发送请求。

下面是一个使用 Server-sent Events 的示例代码:

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

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

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

Server-sent Events 的缺点是它不是所有浏览器都支持,特别是旧版浏览器。此外,它需要服务器支持长连接,并且需要使用特殊的事件流协议来发送数据。

总结

轮询和 Server-sent Events 都是实现实时通信的有效技术,但它们各有优缺点。如果您需要在所有浏览器上运行,并且对实时性要求不高,则可以使用轮询。如果您需要实现即时通信,并且可以放弃对旧版浏览器的支持,则可以使用 Server-sent Events。

无论您选择哪种技术,都需要注意网络带宽和服务器资源的使用情况,以确保应用程序的性能和稳定性。希望本文可以帮助您选择合适的技术,并且能够在实际开发中应用它们。

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

纠错
反馈