Я отправляю SSE с сервера Python Flask, используя flask.Response
, в EventSource
экземпляры в интерфейсе React.js.Это работает просто отлично, но сервер Python Flask генерирует большое количество сообщений журнала в форме ...GET /stream HTTP/1.1...
.Мне интересно, почему он рассылает сообщения журнала и как мне этого не делать?
Flask server:
#!/usr/bin/env python3
import flask
from flask_cors import CORS
import random
app = flask.Flask(__name__)
app.secret_key = 'asdf'
CORS(app)
def stream_internal():
if random.random() < 0.1:
print("sending data")
yield 'data: %s\n\n' % b'test'
@app.route('/stream')
def stream():
return flask.Response(stream_internal(), mimetype="text/event-stream")
if __name__ == '__main__':
app.debug = True
app.run()
Логика подписки React.js (registerCallback
вызывается по поводу8 раз во внешнем интерфейсе):
let callbacks = []
function registerCallback(callback) {
var eventSource = new EventSource("http://localhost:5000/stream")
callbacks.push(callback)
eventSource.onmessage = e => {
var i;
for(i = 0; i < callbacks.length; ++i) {
// this works just fine.
callbacks[i]( ........ )
}
};
}
Сообщения журнала колб:
127.0.0.1 - - [22/Sep/2019 23:14:50] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:50] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
sending data
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
sending data
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:53] "GET /stream HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2019 23:14:56] "GET /stream HTTP/1.1" 200 -