При использовании Flask-MQTT и Flask-SocketIO я пытаюсь отправить сообщение сокета вне контекста события Flask-SocketIO всем подключенным клиентам после получения сообщения MQTT.
Однако при этом сообщения никогда не доходят до клиентов.
Похоже, это была длинная известная проблема , но использование 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
- Flask-MQTT, 1.0.3
- Eventlet, 0.23.0