与 RabbitMQ 一起使用时,Flask-SocketIO 未从前端接收消息
Flask-SocketIO not recieving messages from front end when used with RabbitMQ
我正在尝试设置我的 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 应用程序以将 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 服务器或只发射进程时,队列在内部使用。客户端无法直接访问队列。