Я настраиваю панель управления, для которой требуется Python Flask сервер для выборочной передачи транспортных данных c раз в несколько секунд и отправки этих данных на веб-страницу клиента через веб-сокеты. Я использую FlaskSocketIO для достижения этой цели.
Я могу отправить сообщение, например, по событию 'connect'
, но мне не удалось найти способ постоянно обновлять это сообщение. Это мой подход:
from flask import Flask, render_template, url_for, request
from flask_socketio import SocketIO, emit, send
import eventlet
eventlet.monkey_patch()
app = Flask(__name__)
socketio = SocketIO(app, logger=True, engineio_logger=True)
def listen():
while True:
message = # some updating message
emit('message', message)
socketio.sleep(1)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
listen()
if __name__ == "__main__":
socketio.run(app, debug=True)
Регистратор говорит, что отправляет сообщение. Однако на стороне клиента сообщение не принимается. Клиентская сторона JavaScript:
var socket = io();
socket.on('message', function(msg) {
console.log(msg);
});