为了账号安全,请及时绑定邮箱和手机立即绑定

即使Flask服务器推送似乎起作用,EventSource.onmessage也不会触发

即使Flask服务器推送似乎起作用,EventSource.onmessage也不会触发

炎炎设计 2021-05-21 19:06:01
我创建了一条路由/stream,该路由应该每秒推送一次字符串“ test”。当我localhost:12346/stream在Chrome上打开此URL()时,它的确打开了一个空白页面,并且每秒都会在页面上附加一个“测试”,因此我认为服务器端可以正常工作。当我在Firefox上打开它时,它将其视为永远不会完成的文件下载。但是,当我client.html在下面打开时,onmessageEventSource对象的事件从未触发,因此我没有任何数据。该onopen事件已被触发,我在控制台中看到了该事件。为什么是这样?如何在JavaScript端接收数据?server.py:import flaskimport flask_corsimport timeapp = flask.Flask(__name__)app.debug = Trueflask_cors.CORS(app)def event_stream():    while True:        time.sleep(1)        yield 'test\n'@app.route('/stream')def stream():    return flask.Response(event_stream(), mimetype='text/event-stream')app.run(port=12346, threaded=True)client.html:<!DOCTYPE html><html>  <body>    <script>        var source = new EventSource('http://localhost:12346/stream');        source.onopen = e => console.log('opened', event);        source.onerror = e => console.log('error', event);        source.onmessage = e => console.log('onmessage', event);    </script>  </body></html>
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 390 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信