Я хотел бы создать приложение для мониторинга файлов на моем локальном компьютере через браузер. Я написал минималистичный пример, чтобы проиллюстрировать это. В моем примере ниже я называю эти «стандартные сообщения». Они запускаются на фронте нажатием кнопки и вызовом Fetch и обрабатываются в бэкэнд по маршруту .
Бэкэнд также должен отправлять сообщения каждые 5 секунд. Я называю эти «непрерывные сообщения» и пытаюсь отправить их с помощью Flask-Socketio. Они отправляются бэкэнд с Socketio start_background_task и Emit и получены с помощью Frontend с Socket.on () .
«Стандартные сообщения» работает нормально, если я прокомментирую часть сокета (и замените socketio.run app.run ). Но когда я расстроен, часть сокета, чтобы иметь «непрерывные сообщения», общение терпит неудачу. Бэкэнд не получает вызовы «стандартные сообщения», и Frondend не получает «непрерывные сообщения». Что мне нужно добавить, чтобы оба сообщения типа работали правильно?import time
from flask import Flask
from flask_cors import CORS
from flask_socketio import SocketIO
app = Flask(__name__)
CORS(app)
# Continuous messages ##########################################
socketio = SocketIO(app, cors_allowed_origins="*")
@socketio.on('connect')
def handle_connect():
print('Client connected')
socketio.start_background_task(send_continuous_messages)
def send_continuous_messages():
while True:
print("Backend sends a continuous message")
socketio.emit("continuous_message", {"data": "New continuous message"})
time.sleep(5)
################################################################
@app.route("/standard-message", methods=["GET"])
def generate_standard_message():
print("Backend sends a standard message")
return {"data": "New standard message"}
if __name__ == "__main__":
print("Starting app")
socketio.run(app, debug=True)
< /code>
frontend < /p>
const myButton = document.getElementById('my-button');
const BASE_URL = "http://localhost:5000";
// Continuous messages #########################################
const socket = io(BASE_URL);
socket.on('connect', () => {
console.log('WebSocket connected');
});
socket.on('disconnect', () => {
console.log('WebSocket disconnected');
});
socket.on('continuous_message', (data) => {
console.log('Frontend received a continuous message:', data);
});
// #############################################################
async function receiveStandardMessage() {
console.log('Frontend is requesting a standard message');
const response = await fetch(`${BASE_URL}/standard-message`);
const data = await response.json();
console.log('Frontend received a standard message:', data);
}
myButton.addEventListener('click', receiveStandardMessage);
< /code>
index.html
My app
Send standard message
Подробнее здесь: https://stackoverflow.com/questions/794 ... ntinuously
Используйте Flask-Socketio, чтобы непрерывно отправлять сообщения ⇐ Javascript
Форум по Javascript
-
Anonymous
1740913894
Anonymous
Я хотел бы создать приложение для мониторинга файлов на моем локальном компьютере через браузер. Я написал минималистичный пример, чтобы проиллюстрировать это. В моем примере ниже я называю эти «стандартные сообщения». Они запускаются на фронте нажатием кнопки и вызовом Fetch и обрабатываются в бэкэнд по маршруту .
Бэкэнд также должен отправлять сообщения каждые 5 секунд. Я называю эти «непрерывные сообщения» и пытаюсь отправить их с помощью Flask-Socketio. Они отправляются бэкэнд с Socketio start_background_task и Emit и получены с помощью Frontend с Socket.on () .
«Стандартные сообщения» работает нормально, если я прокомментирую часть сокета (и замените socketio.run app.run ). Но когда я расстроен, часть сокета, чтобы иметь «непрерывные сообщения», общение терпит неудачу. Бэкэнд не получает вызовы «стандартные сообщения», и Frondend не получает «непрерывные сообщения». Что мне нужно добавить, чтобы оба сообщения типа работали правильно?import time
from flask import Flask
from flask_cors import CORS
from flask_socketio import SocketIO
app = Flask(__name__)
CORS(app)
# Continuous messages ##########################################
socketio = SocketIO(app, cors_allowed_origins="*")
@socketio.on('connect')
def handle_connect():
print('Client connected')
socketio.start_background_task(send_continuous_messages)
def send_continuous_messages():
while True:
print("Backend sends a continuous message")
socketio.emit("continuous_message", {"data": "New continuous message"})
time.sleep(5)
################################################################
@app.route("/standard-message", methods=["GET"])
def generate_standard_message():
print("Backend sends a standard message")
return {"data": "New standard message"}
if __name__ == "__main__":
print("Starting app")
socketio.run(app, debug=True)
< /code>
frontend < /p>
const myButton = document.getElementById('my-button');
const BASE_URL = "http://localhost:5000";
// Continuous messages #########################################
const socket = io(BASE_URL);
socket.on('connect', () => {
console.log('WebSocket connected');
});
socket.on('disconnect', () => {
console.log('WebSocket disconnected');
});
socket.on('continuous_message', (data) => {
console.log('Frontend received a continuous message:', data);
});
// #############################################################
async function receiveStandardMessage() {
console.log('Frontend is requesting a standard message');
const response = await fetch(`${BASE_URL}/standard-message`);
const data = await response.json();
console.log('Frontend received a standard message:', data);
}
myButton.addEventListener('click', receiveStandardMessage);
< /code>
index.html
My app
Send standard message
Подробнее здесь: [url]https://stackoverflow.com/questions/79478980/use-flask-socketio-to-send-messages-continuously[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия