与RabbitMQ一起使用时,Flask-SocketIO无法从前端收到消息

时间:2017-06-02 09:41:15

标签: 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', 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"});
});

我在控制台中也没有出错。

1 个答案:

答案 0 :(得分:1)

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

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

作为旁注,当我以这种方式添加消息队列时,我不确定您期望会有什么不同。客户端从不与消息队列通信。当您有多个Flask-SocketIO服务器或仅发出进程时,队列将在内部使用。客户端无法直接访问队列。