javascript - Flask-SocketIO 与 RabbitMQ 一起使用时未从前端接收消息

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

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

最佳答案

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

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

顺便说一句,我不确定当您以这种方式添加消息队列时您期望有什么不同。客户端从不与消息队列对话。当您有多个 Flask-SocketIO 服务器或仅发出进程时,队列在内部使用。客户端无权直接访问队列。

关于javascript - Flask-SocketIO 与 RabbitMQ 一起使用时未从前端接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325703/

相关文章:

javascript - 使用适用于 ios/android 的 jquery ui 键盘插件

javascript - 无法使用 loopbackjs 验证 nodejs 中的第一个证书

python - 如何在点击后删除 tkinter 中的消息

python - Scikit-learn 多标签分类

python - 有什么方法可以从 flask 中带有 '\n' 字符的字符串中添加新行?

php - 如何拥有一个由 Apache 提供服务的 Flask 网站以及位于/blog 的 WordPress 博客?

javascript - 使用 Google Chart Api 以编程方式更新图表

javascript - 在最接近当前鼠标点的 svg 笔画上查找点的有效方法?

Python - 查找字符串文本中的重复项数

python - MongoEngine with Flask - 错误 'NoneType'对象没有属性 'choices'