Я поместил код Python в файл, называемый «sse_tester.py» (см. Ниже). Вот код с этой веб -страницы: < /p>
from flask import Flask, Response
app = Flask(__name__)
@app.route('/events')
def sse_handler():
def generate():
paragraph = [
"Hello, this is an example of a continuous text output.",
"It contains multiple sentences, each of which will be sent to the client as an event.",
"This is to simulate the functionality of Server-Sent Events (SSE).",
"We can use this method to push real-time updates.",
"End of sample text, thank you!",
]
for sentence in paragraph:
yield f"data: {sentence}\n\n"
import time
time.sleep(1)
return Response(generate(), mimetype='text/event-stream')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8081, debug=True)
< /code>
Я ничего не вижу в приведенном выше коде, который сообщает скрипту, где найти API браузера (кроме, может быть, App.Route?). Я являюсь новичком, когда дело доходит до JavaScript, и я не удивлюсь, если есть какая -то магия, которую я должен сделать с JS, что автор этого кода предполагает, что читатель знает, а я нет. Если это так, помощь в этом будет очень признателен.
SSE Example
Server-Sent Events Example
window.onload = function() {
if (typeof(EventSource) !== "undefined") {
const eventSource = new EventSource('/events');
eventSource.onmessage = function(event) {
const newElement = document.createElement("p");
newElement.textContent = "Message: " + event.data;
document.getElementById("messages").appendChild(newElement);
};
eventSource.onerror = function(event) {
console.error("Error occurred: ", event);
const newElement = document.createElement("p");
newElement.textContent = "An error occurred while connecting to the event source.";
document.getElementById("messages").appendChild(newElement);
eventSource.close();
};
} else {
document.getElementById("messages").textContent = "Sorry, your browser does not support server-sent events...";
}
};
< /code>
Это похоже на то, что в этом API есть HTML-код, поэтому я поместил его в файл «Events.html», который я поместил в подкаталог, называемый «события», на основе App.Route. Но нет. Чтобы доказать себе, HTML -файл не имеет никакого значения, я временно удалил его. Те же результаты; По -видимому, его игнорируют.
Я пытался изменить имя файла html на 'index.html', и это не так. Сообщения. < /p>
Так что мне нужно делать по -другому? Почему браузер и/или сценарий Python игнорируют API браузера? Я полагаю, что если я не смогу заставить этот пример работать, я, вероятно, не смогу заставить SSE работать в моем приложении. Браузер - Chrome версия 134.0.6998.36, работающий на Windows 10 Enterprise. Python 3.9.13 Бег в Wing Pro Ide. Flask версия 1.1.2. < /P>
Сначала румяна это может показаться проблемой, описанной в приложении Flask, продолжает отображать необработанный HTML -код, но не фактическое рендеринг, но эта проблема была вызвана «случайными метками», сгенерированным CHATGPT, а код, который я тестирую, не имеет каких -либо случайных тегов и (предположительно) создан человеком. Кроме того, я успешно создал несколько веб-страниц, используя колбу, и они выполняются правильно.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... ent-events