关于javascript:服务端主动推送消息Serverclient-eventsSSE

前言

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理