Я пробовал SSE с колбой, без колбы-SSE. Код на стороне сервера следующий.
# run.py
from sse_test import app
app.run(debug=True, port=5002)
# sse_test/__init__.py
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
import sse_test.views
# sse_test/views.py
from sse_test import app
from flask import Response
import time
@app.route('/stream')
def stream():
def sse_response():
while True:
yield str(time.time()) + '\n'
time.sleep(2)
print('streamed')
res = Response(sse_response(), mimetype='text/event-stream')
return res
И код на стороне клиента следующий.
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SSE Test</title>
</head>
<body>
<script src="script.js"></script>
</body>
</html>
window.onload = function () {
const eventSource = new EventSource("http://localhost:5002/stream");
eventSource.onopen = function (e) {
console.log('opend');
}
eventSource.onmessage = function (e) {
console.log(e.data);
}
eventSource.onerror = function (e) {
console.log('errored');
}
}
Я получил «открыт»в консоли браузера и получил «streamd» в консоли сервера, но не смог получить ответное сообщение в консоли браузера. Когда я непосредственно просматривал 'http://localhost:5002' в Chrome, Chrome показывал ответное сообщение на странице.
Где в моем коде ошибка?
Спасибо.