本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
在本文中,我们将讨论如何使用两种不同的技术向您的后端应用程序添加实时通信功能:WebSockets 和 Server-Sent Events。我们将介绍每种技术的基础知识,以及您何时可能想要使用其中一种技术。最后,我们将提供一些代码片段以帮助您入门。
WebSockets 是一种在客户端和服务器之间保持连接打开以便数据可以在它们之间实时来回流动的方法。一旦建立连接,它将保持打开状态,直到其中一方决定关闭它。这使得 WebSockets 非常适合需要持续通信的应用程序,例如聊天应用程序或多人游戏。
WebSockets 使用与 HTTP 非常相似的协议,因此它们可以与支持 HTTP 的任何库或框架一起使用。为了建立连接,客户端向服务器发送一个请求,其中包含特定的标头,表明他们想要使用 WebSocket 协议。然后服务器用它自己的标头响应,并建立连接。之后,从客户端发送到服务器的任何数据都会通过已建立的连接进行,反之亦然。
使用 WebSockets 的一个优点是它们可以与多路复用一起使用。这意味着单个连接可用于同时发送和接收用于多个目的的数据。如果您想长时间保持连接打开并且不想在每次需要发送或接收数据时都必须建立新连接,这会很有用。
另一个优点是,因为连接是持久的,所以可以随时用来发送数据,而不必等待服务器的响应。这对于需要实时发送数据的应用程序很有用,例如聊天应用程序或多人游戏。
Server-Sent Events (SSE) 是一种将事件从服务器实时发送到客户端的技术。与 WebSockets 不同,SSE 使用一种从服务器到客户端的单向通信通道。这意味着客户端只能从服务器接收数据,而不能将数据发回服务器。
SSE 旨在与服务器端推送通知一起使用。这意味着即使客户端没有主动请求数据,服务器也可以向客户端发送数据。这使得 SSE 非常适合需要实时接收数据但不需要将数据发送回服务器的应用程序,例如股票行情或体育比分。
SSE 是 HTML5 标准的一部分,因此它可以与任何支持 HTML5 的库或框架一起使用。为了建立连接,客户端向服务器发送一个请求,其中包含特定的标头,表明他们想要使用 SSE 协议。然后服务器用它自己的标头响应,并建立连接。之后,从服务器发送到客户端的任何数据都会通过已建立的连接。
使用 SSE 的一个优点是它是 HTML5 标准的一部分,因此受到浏览器的良好支持。另一个优点是,由于连接是持久的,它可以随时用来发送数据,而不必等待客户端的响应。这对于需要实时发送数据的应用程序非常有用,例如股票行情或体育比分。
一般来说,如果你需要客户端和服务器之间的双向通信,你应该使用WebSockets,如果你只需要从服务器到客户端的单向通信,你应该使用SSE。