介绍
Server-Sent Events(SSE)是 HTML5 规范中的一种技术,它可以使浏览器与服务器之间建立长连接,实现实时通信。相比于 WebSocket,SSE 更加适用于单向通信的场景,比如服务器向客户端推送实时数据。
SSE 基于 HTTP 协议,使用了 EventSource API,可以在浏览器端通过 JavaScript 监听服务器端推送的消息。与 Ajax 相比,SSE 的优点在于可以实现实时通信,而不需要客户端不停地向服务器发送请求。
实现
服务器端
SSE 的服务器端实现比较简单,只需要在 HTTP 头部设置 Content-Type
为 text/event-stream
,并且每隔一段时间向客户端发送一条消息即可。下面是一个使用 Node.js 实现 SSE 的例子:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - ---------------- - - --- -------------------- - -------- -- ------ --- --------------------
在上面的例子中,服务器每隔一秒钟向客户端发送一条消息,消息的格式为 data: [message]\n\n
,其中 [message]
是要发送的消息内容。
客户端
在客户端,我们可以通过 JavaScript 中的 EventSource
API 来监听服务器端发送的消息。下面是一个简单的例子:
const source = new EventSource('/sse'); source.addEventListener('message', (event) => { console.log('Received message: ' + event.data); });
在上面的例子中,我们首先创建了一个 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