我创建了一条路由/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>
添加回答
举报
0/150
提交
取消