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 对象的属性和方法的详细说明,适合开发者查阅参考。

目录
相关文章
|
7月前
|
应用服务中间件 nginx
【报错】Failed to start A high performance web server and a reverse proxy server.
【报错】Failed to start A high performance web server and a reverse proxy server.
532 2
Server-Sent Events 和 WebSocket 之间有什么区别
Server-Sent Events (SSE) 和 WebSocket 分别代表单向和双向通信机制。SSE,基于 HTTP,仅允许服务器向客户端发送事件流;而 WebSocket 是双向实时通信协议,支持客户端与服务器的双向交互。SSE适合低实时性场景,依赖长轮询或流传输;WebSocket 提供更低延迟,适用于高实时性应用。两者在现代浏览器中普遍被支持,但旧版浏览器或特定网络环境可能影响兼容性。选择哪种机制取决于实际需求,如通信方向、实时性要求及目标浏览器支持。
|
3月前
|
监控
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
|
6月前
|
SQL 运维 关系型数据库
will be dropped if server is in r-o mode问题解决
【6月更文挑战第26天】will be dropped if server is in r-o mode问题解决
158 2
|
7月前
|
前端开发 JavaScript API
Server-Sent Events)
服务器发送事件(Server-Sent Events,简称SSE)是一种基于HTTP协议的实时通信技术,允许服务器向客户端推送实时消息。与传统的轮询和长轮询相比,SSE提供了更高效和实时的数据推送机制。
194 2
|
7月前
|
监控 前端开发 网络协议
SSE(Server-Sent Events)请求与EventSource
SSE(Server-Sent Events)请求与EventSource
915 0
|
监控 前端开发
服务器发送事件(Server-Sent Events)
服务端向客户端推送消息,其实除了可以用WebSocket这种耳熟能详的机制外,还有一种服务器发送事件(Server-Sent Events),简称 SSE。这是一种服务器端到客户端(浏览器)的单向消息推送。
458 0
UE Http Server Plug -in description
UE Http Server Plug -in description
104 0
|
Web App开发 前端开发 安全
基础:BS(Browser/Server)、CS(Client/Server)架构
基础:BS(Browser/Server)、CS(Client/Server)架构
559 0
|
网络安全 开发工具 数据安全/隐私保护
Fetch failed: unable to access': E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Fetch failed: unable to access': E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
353 0