SSE(Server-Sent Events)

简介: SSE(Server-Sent Events)是一种基于 HTTP 的服务器推送技术,用于在客户端和服务器之间实现实时双向通信。使用 SSE,服务器可以向客户端发送事件流,客户端可以通过监听事件流来获取服务器的推送消息。

SSE(Server-Sent Events)是一种基于 HTTP 的服务器推送技术,用于在客户端和服务器之间实现实时双向通信。使用 SSE,服务器可以向客户端发送事件流,客户端可以通过监听事件流来获取服务器的推送消息。

SSE 的优点在于它是一种轻量级的通信协议,不需要建立复杂的 WebSocket 连接,也不需要使用轮询来获取服务器的更新。相比之下,SSE 可以更快地响应服务器推送的消息,并且对于实时性要求不高的应用场景,SSE 更加适用。

以下是一个使用 SSE 的简单示例:

服务器端代码(使用 Python Flask 框架):

python
Copy
from flask import Flask, Response

app = Flask(name)

@app.route('/stream')
def stream():
def event_stream():
for i in range(10):
yield f"data: {i}\n\n"

return Response(event_stream(), mimetype="text/event-stream")

在上面的代码中,我们定义了一个 /stream 接口,该接口返回一个 SSE 事件流。事件流中包含了 0 到 9 的数字,每个数字之间间隔 1 秒。

客户端代码:

javascript
Copy
const eventSource = new EventSource('/stream');
eventSource.onmessage = (event) => {
console.log(event.data);
};
在上面的代码中,我们使用 JavaScript 创建了一个 SSE 事件源,并监听 onmessage 事件。每当服务器端发送一个事件时,客户端就会收到该事件,并在控制台上输出事件的数据。

在实际使用中,您可以将 SSE 用于各种实时通信场景,如实时聊天、实时数据可视化等。

需要注意的是,SSE 仅适用于服务器向客户端推送消息的场景,如果您需要在客户端向服务器发送消息,您仍需要使用 WebSocket 或其他通信协议。


参考:

MDN Web Docs: Server-Sent Events (SSE) ↗

MDN Web Docs 提供了一份详细的 SSE 文档,包含了 SSE 的基本概念、使用方法、API 等内容,适合初学者学习。

HTML5 Rocks: Using server-sent events ↗

HTML5 Rocks 提供了一篇介绍 SSE 基本概念和使用方法的文章,内容简单明了,适合初学者快速入门。

Server-Sent Events: HTML5 rocks ↗

这是一份来自 HTML5 Rocks 的 SSE 教程,适合想要了解 SSE 的基本概念和用法的读者。

Server-Sent Events: Introduction to SSE ↗

这是一篇介绍 SSE 基本概念和使用方法的文章,适合初学者入门。

EventSource API: Web API MDN ↗

这是一份关于 EventSource API 的官方文档,包含了 EventSource 对象的属性和方法的详细说明,适合开发者查阅参考。

目录
相关文章
|
监控 前端开发 JavaScript
不用WebSocket也能搞定实时消息推送?试一试SSE吧!
在现代 Web 开发中,实时数据更新至关重要,如股票行情、聊天消息等。SSE(Server-Sent Events)是一种基于 HTTP 的简单技术,可实现服务器向客户端推送实时通知。相比 WebSocket,SSE 单向通信、易于实现且具备自动重连机制。本文通过 Go 语言与 Gin 框架,演示了如何构建 SSE 实时时间推送功能。服务端代码设置必要响应头并使用定时器发送数据,客户端通过 `EventSource` 接收并展示消息。此外,还探讨了性能优化及扩展场景,如监控仪表盘和任务进度更新,帮助开发者在实际项目中应用这一高效技术。
1101 2
不用WebSocket也能搞定实时消息推送?试一试SSE吧!
|
JavaScript 前端开发 API
【第42期】一文了解服务端渲染框架NextJS
【第42期】一文了解服务端渲染框架NextJS
1576 0
|
API 数据格式
初识SSE
初识SSE
574 0
|
存储 Kubernetes Cloud Native
[云原生] [kubernetes] K8S安装存储类 - StorageClass
[云原生] [kubernetes] K8S安装存储类 - StorageClass
1358 0
[云原生] [kubernetes] K8S安装存储类 - StorageClass
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1034 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
8388 0
|
机器学习/深度学习 缓存 人工智能
从ChatGPT聊天服务上深挖Http、WebScoket和SSE推送技术的区别
从ChatGPT聊天服务上深挖Http、WebScoket和SSE推送技术的区别
1288 1
|
人工智能 开发框架 监控
LangChain和Hub的前世今生
作为LLM(大模型)开发框架的宠儿,LangChain在短短几年内迅速崛起,成为开发者们不可或缺的工具。本文将带你探讨LangChain和LangChainHub的发展历程。
LangChain和Hub的前世今生
|
弹性计算 编解码 负载均衡
阿里云飞天洛神2.0:开放弹性的云网络NFV平台
作为飞天系统的核心组件,洛神平台支撑了超大规模租户、超大规模虚拟机的高性能云网络。其中洛神2.0 NFV平台的定位是构建通用、灵活的平台能力,降低业务网元NFV化的门槛和成本,实现了复杂业务网元超高的灵活性和弹性。
6133 0
阿里云飞天洛神2.0:开放弹性的云网络NFV平台