简介
Server-Sent Events (SSE) 是一种 Web 技术,可以实现服务器向客户端推送事件通知。与传统的轮询或长轮询相比,SSE 可以减少网络流量和服务器负载,并且实时性更好。SSE 通常用于实时聊天、股票行情、新闻推送等场景。
工作原理
SSE 是基于 HTTP 协议的,使用的是单向的持久连接。客户端通过 EventSource
对象向服务器发起连接请求,服务器在收到请求后,保持连接不断开,然后向客户端发送事件通知。客户端通过监听 onmessage
事件接收事件通知。当客户端不再需要接收通知时,可以调用 close()
方法关闭连接。
以下是一个简单的示例:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------- ---------- ------- ------ ---- ------------------ -------- ----- ------ - --- -------------------- ---------------- - --------------- - ----- ---- - ----------------------- ------------------------------------------- -- ------------ - ------- -- --------- ------- -------展开代码
客户端向 /sse
发起连接请求,服务器返回的响应头中包含 Content-Type: text/event-stream
,表示这是一个 SSE 连接。服务器可以向客户端发送多个事件,每个事件由一个或多个字段组成,使用 data:
前缀表示。事件之间使用空行分隔。以下是服务器端的示例代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----------------------- ---- -- - ------------------ - --------------- -------------------- ---------------- ----------- ------------- ------------ --- -------------- -- - ----- ---- - ---------------- -------- ------- ----- --- ---------------- -------------- -- ------ ----------------展开代码
服务器每隔一秒钟向客户端发送一个包含 message
字段的事件通知。
应用场景
SSE 在大规模事件通知系统中有广泛的应用。例如,一个在线游戏可能需要向所有在线玩家发送游戏状态的变化,使用 SSE 可以实现实时性更好的事件通知。一个在线交易平台可能需要向所有订阅某个股票行情的用户发送股票价格的变化,使用 SSE 可以减少网络流量和服务器负载。一个新闻网站可能需要向所有订阅某个话题的用户发送相关新闻的更新,使用 SSE 可以实现更好的用户体验。
总结
SSE 是一种基于 HTTP 协议的 Web 技术,可以实现服务器向客户端推送事件通知。SSE 可以减少网络流量和服务器负载,并且实时性更好,适用于大规模事件通知系统。SSE 的工作原理是基于单向的持久连接,客户端通过 EventSource
对象向服务器发起连接请求,服务器保持连接不断开,然后向客户端发送事件通知。客户端通过监听 onmessage
事件接收事件通知。SSE 的应用场景包括在线游戏、在线交易平台、新闻网站等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c711deadd4f0e0ff13c35e