flask-sse 在其 quickstart 部分提供了一些示例代码。但是,该代码向所有订阅的客户端发布事件。要仅向某些客户端发布事件,文档建议使用通道。但是,如果这些事件必须是私有的(例如通知特定用户的新消息已到达)怎么办?你不想做一些事情,比如让客户端传递一个用户 ID,并让服务器在以该用户 ID 命名的频道上推送更新,因为这会带来安全/隐私问题。
如果有的话,用
flask_sse
或简单的flask
实现这样的功能的正确方法是什么?
例如,用户可以将其
JWT
传递给订阅 API 端点。但是然后呢?
from flask import Flask, request
from flask_jwt_extended import current_user, jwt_required
from flask_sse import sse
app = Flask(__name__)
@app.route("/subscribe")
@jwt_required()
def subscribe():
....?
@app.route("/receive-message")
def receive_message():
# message comes in for a user from outside the system
# for example this API is triggered by a webhook from a third party service
form_data = request.json()
# figure out who the recipient is
user_uuid = get_destination_user_id(form_data)
user = db.session.query(User).filter_by(uuid=user_uuid).one()
# now we want to publish an event, but only for this user...
...?