ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
前言
众所周知,用http可以实现从客户端请求服务端的消息,用websocket可以实现客户端和服务器的双向通信,但用SSE实现服务端主动推送的比较少。
SSE相当于http的优点是可以由服务端主动推送消息。SSE相当于websocket的优点是断开连接后可以自动重连。
使用场景
- 消息统一推送
- 数据实时更新
- 代替轮询
使用方法
node的话,可以用阮老师的例子node实现SSE
python可以参考下面的代码
from flask import Flask, Response
import time
import json
app = Flask(__name__)
def message_to_send():
time.sleep(5)
return json.dumps({"message": "hello"})
@app.route("/stream")
def stream():
def event_stream():
while True:
print("send")
yield "data: {}\n\n".format(message_to_send())
return Response(
event_stream(),
mimetype="text/event-stream",
headers={"Access-Control-Allow-Origin": "*"},
)
if __name__ == "__main__":
app.run()
注意事项
- 需要服务端设置允许跨域
- 需要设置
mimetype
- 有连接个数限制,每个域名下好像是限制6个
- 如果想测试自动重连,可以先关闭服务端的服务再打开