Почему браузер игнорирует HTML-код при отображении серверных событийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему браузер игнорирует HTML-код при отображении серверных событий

Сообщение Anonymous »

Я пытаюсь использовать SSE для автоматического обновления источника изображения, встроенного в HTML в веб -приложении, которое я создал. Хотя я использовал Python и Flask, чтобы создать несколько страниц в моем приложении, я новичок в SSE, и я пытаюсь сделать работу примером SSE на основе https://dev.to/philip_zhang_854092d8847 ... bbrprishbr формирует. /> Вывод не появляется, как я и ожидал. Вместо того, чтобы получить фактическую веб-страницу с появлением предложений один за другим, браузер показывает буквальные строки, созданные оператором урожая в FOR-петле, в комплекте с подстроением «Данные:» и подачи двойной линии. Я использовал 127.0.0.1/events в качестве URL. (См. Ниже.)

Я поместил код 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»