前言
家喻户晓,用http能够实现从客户端申请服务端的音讯,用websocket能够实现客户端和服务器的双向通信,但用SSE实现服务端被动推送的比拟少。
SSE相当于http的长处是能够由服务端被动推送音讯。SSE相当于websocket的长处是断开连接后能够主动重连。
应用场景
- 音讯对立推送
- 数据实时更新
- 代替轮询
应用办法
node的话,能够用阮老师的例子node实现SSE
python能够参考上面的代码
from flask import Flask, Responseimport timeimport jsonapp = 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个
- 如果想测试主动重连,能够先敞开服务端的服务再关上