前言

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