前言
家喻户晓,用 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 个
- 如果想测试主动重连,能够先敞开服务端的服务再关上