Flask-SSE: 实现服务器发送事件的简易指南
项目基础介绍及编程语言
Flask-SSE 是一个由 Python 编写的简单 Flask 扩展,旨在为 Web 应用提供 HTML5 服务器发送事件(Server-Sent Events, SSE)的支持。SSE 允许服务器端实时推送数据到客户端浏览器,而无需客户端反复请求,极大地简化了实现实时更新的技术方案。此项目依赖于 Redis 作为消息队列存储中间件。
主要编程语言: Python
关键技术和框架
- Flask: 轻量级的 Python web 开发框架。
- Redis: 高性能的键值数据库,用于存储和分发消息。
- HTML5 Server-Sent Events: 客户端技术,使网页能够接收来自服务器的数据流。
安装和配置指南
准备工作
确保已安装以下软件:
- Python(推荐版本 3.6 或更高)
- pip,Python 的包管理工具。
- Redis, 服务器端需要运行 Redis 数据库。
安装 Redis,并启动服务。具体安装方法根据操作系统不同而异,可参考官方文档。
步骤一:安装 Flask-SSE
首先,创建一个新的虚拟环境以保持项目环境隔离(推荐做法):
python3 -m venv my_flask_sse_venv
source my_flask_sse_venv/bin/activate # 对于 Windows, 使用 `.\Scripts\activate`
接着,通过 pip 安装 Flask-SSE 和其依赖:
pip install git+https://github.com/DazWorrall/flask-sse.git
步骤二:配置 Flask 应用
-
创建 Flask 应用:新建一个 Python 文件,如
app.py,并导入必要的模块。from flask import Flask from flask_sse import sse app = Flask(__name__) app.register_blueprint(sse, url_prefix="/stream") -
配置 Redis 连接:在 Flask 应用中设置 SSE_REDIS_* 环境变量或直接在代码里配置:
app.config['SSE_REDIS_HOST'] = 'localhost' app.config['SSE_REDIS_PORT'] = 6379 app.config['SSE_REDIS_DB'] = 0
步骤三:实现事件发送与接收
-
发送事件:定义一个视图函数来发送事件到客户端。
@app.route('/send') def send_message(): send_event('myevent', json.dumps(["message": "Hello"])) -
创建 HTML 页面接收事件:在你的应用静态资源目录下创建一个 HTML 文件,例如
templates/index.html。<!DOCTYPE html> <html> <body> <script> var source = new EventSource("/stream"); source.addEventListener('myevent', function(e) { var data = JSON.parse(e.data); console.log(data.message); // 输出 "Hello" }, false); </script> </body> </html>
步骤四:运行 Flask 应用
确保 Redis 已启动,然后运行你的 Flask 应用:
python app.py
默认情况下,应用会在本地的 5000 端口上运行。打开浏览器,访问 http://localhost:5000 查看效果,并点击 http://localhost:5000/send 触发事件发送。
至此,您已经成功安装并配置了 Flask-SSE,能够实现基本的服务器向客户端的消息推送功能。对于生产环境部署,考虑使用异步 WSGI 服务器如 Gunicorn 配合 gevent 提升性能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



