Flask-SocketIO: выдает сокет всем клиентам вне контекста - PullRequest
0 голосов
/ 05 июля 2018

При использовании 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
...