Javascript Flask SocketIO与RabbitMQ一起使用时未接收来自前端的消息

Javascript Flask SocketIO与RabbitMQ一起使用时未接收来自前端的消息,javascript,python,flask,socket.io,flask-socketio,Javascript,Python,Flask,Socket.io,Flask Socketio,我正在尝试将Flask应用程序设置为使用RabbitMQ作为消息队列。如果我从服务器发出消息,它可以正常工作,但是如果我尝试发出消息,则什么也不会发生。前端套接字似乎没有与队列通信 我的套接字代码如下所示: from flask_socketio import emit, SocketIO socketio_mp = SocketIO(message_queue='amqp://guest:guest@localhost:5672//') @socketio_mp.on('connected

我正在尝试将Flask应用程序设置为使用RabbitMQ作为消息队列。如果我从服务器发出消息,它可以正常工作,但是如果我尝试发出消息,则什么也不会发生。前端套接字似乎没有与队列通信

我的套接字代码如下所示:

from flask_socketio import emit, SocketIO

socketio_mp = SocketIO(message_queue='amqp://guest:guest@localhost:5672//')

@socketio_mp.on('connected', namespace='/test')
def joined():
    """Sent by clients when they enter a room.
    A status message is broadcast to all people in the room."""
    print('connected')
套接字已正确初始化,如Flask SocketIO文档所示。
connected
事件永远不会触发,即使它是从前端发出的

var namespace = "/test";
socket = io.connect(location.protocol + "//" + document.domain + ":" + location.port + namespace);

socket.on("connect", function() {

    console.log("connected");
    socket.emit("connected", {msg: "next"});
});

我在控制台中也没有收到任何错误

创建
SocketIO
实例时,必须将Flask应用程序作为第一个参数传递:

socketio_mp = SocketIO(app, message_queue='amqp://guest:guest@localhost:5672//')

顺便说一句,我不确定以这种方式添加消息队列时会有什么不同。客户端从不与消息队列通信。当您有多个Flask SocketIO服务器或仅发射进程时,队列用于内部。客户端无法直接访问队列。

提供的代码不显示您如何运行应用程序。正如Flask SocketIO文档中所述,您应该通过
SocketIO.run()
包装Flask
app.run()
@farzad运行应用程序。实际上,我确实以正确的方式初始化了应用程序。该应用程序在未添加消息队列时工作。此处的问题地址我使用的是蓝图样式的烧瓶应用程序。如果我使用
init\u app
方法,它还能工作吗?我只是不知道为什么当我在前端发出事件时,它不会被后端拾取。只有在添加消息队列时才会发生这种情况。即使是
connect
之类的内置事件也不会在后端触发。当然,您也可以使用
init\u app()