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

76次阅读

共计 661 个字符,预计需要花费 2 分钟才能阅读完成。

前言

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

正文完
 0