С помощью Flask-MQTT и Flask-SocketIO я пытаюсь отправить сообщение сокета из контекста события Flask-SocketIO всем подключенным клиентам после получения сообщения MQTT. Тем не менее, при этом кажется, что сообщения никогда не достигают клиентов.
Похоже, это был длинный известно issue, но использование app.app_context()
мне тоже не подходит.
Вот что у меня есть на данный момент:
app = Flask(__name__)
[app.config ...]
cors = CORS(app,resources={ "/*": {"origins":"*"} })
mqtt = Mqtt(app)
socketio = SocketIO(app)
[...]
@mqtt.on_message()
def handle_mqtt_message(client, userdata, message):
with app.app_context():
# Send socket to all connected clients.
# Not working for some reasons...
socketio.emit("mqtt_message")
@socketio.on("connect")
def handle_socketio_connect():
# This works.
emit("hello")
if __name__ == "__main__":
socketio.run(app, [...] )
Версии пакетов:
- Flask-SocketIO, 3.0.1
- Колба-MQTT, 1.0.3
- Ивентлет, 0.23.0