什么是 Server-sent Events?
Server-sent Events (SSE) 是一种 HTML5 标准化的技术,用于在客户端和服务器之间建立基于 HTTP 协议的单向实时通信。
SSE 允许服务端向客户端推送消息流,而客户端浏览器可通过原生 JavaScript API 事件监听接收这些消息。这种方式通常比轮询或 WebSocket 更为实用,因为它不需要实时双向通信,而仅仅是推送服务器发送的单向信息流。
SSE 的应用场景
实时数据流模板(Realtime Data Stream Template)
SSE 在实时数据流模板方面是非常流行的解决方案,该模式的主要应用包括数据可视化、实时信息推送、实时协作工具等。
例如,您可能有一个数据报表显示火车上的所有实时运动情况,火车出发时间,站台信息、未决尽量延迟的预测到达时间等。使用 SSE,您的应用程序可以监听实时数据流,及时更新该信息,而不必轮询服务器。
实时监控工具(Realtime Monitoring Tools)
有时,您需要在对网络、服务器、硬件或设备进行监控并作出响应的关键时刻发出警报。在这种情况下,您可以创建 SSE 脚本,定期检查网络连接并向服务器请求警报。
您可以将此方法与实时赛车游戏等游戏相关联。
聚合实时新闻(Realtime News Aggregation)
在现代社会中,快速获取新闻信息是必要的。您可能需要几个小时甚至几分钟内刷新新闻页面。使用 SSE 可以让您实时跟踪新闻,而不必频繁地刷新页面并浪费宝贵的网络带宽。
实时动态信息流可以挖掘用户的兴趣所在,并提供更为个性化的新闻阅读体验。
使用 SSE
服务端
SSE 可通过建立继承自 HttpServlet
的 Servlet 进行使用。
-- -------------------- ---- ------- ----------------- - ------- -------------- - ----- ------ ----- ---------- ------- ----------- - --------- --------- ---- ------------------------ ---- ------------------- ----- ------ ----------------- ----------- - ----------------------------------------- ----------------------------------- ----------- ------ - ----------------- ------ ------ - --- --------- ------- - - -- - - - - ---- - --- - ------------------- -- ------- -- --------- - ----- --------------------- -- - -------------------- - ------------------- ----------- --- - ------------------- - ----------- -- -- --- ---- --------------- - - -
客户端
以下是一个客户端 SSE 脚本示例。
var source = new EventSource('/sse'); source.onmessage = function(event) { var data = JSON.parse(event.data); console.log(data.value); };
结论
SSE 可用于广泛的场景,包括实时数据流模板、实时监控工具、聚合实时新闻等。它的主要优点是可以与 HTTP 和 HTML5 协作,无须特地安装或配置额外的库或技术。对于需要与前端互动的后端应用程序,SSE 是一种非常有用和方便的技术。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674934fda1ce006354477f66