寻找一些代码示例来解决这个问题:-
想编写一些代码(Python 或 Javascript)作为 RabbitMQ 队列的订阅者,以便在接收到消息时通过 websocket 将消息广播到任何连接的客户端。
我查看了 Autobahn 和 node.js(使用“ amqp ”和“ ws ”),但无法让事情按需要工作。这是使用 node.js 的 javascript 中的服务器代码:-
var amqp = require('amqp');
var WebSocketServer = require('ws').Server
var connection = amqp.createConnection({host: 'localhost'});
var wss = new WebSocketServer({port:8000});
wss.on('connection',function(ws){
ws.on('open', function() {
console.log('connected');
ws.send(Date.now().toString());
});
ws.on('message',function(message){
console.log('Received: %s',message);
ws.send(Date.now().toString());
});
});
connection.on('ready', function(){
connection.queue('MYQUEUE', {durable:true,autoDelete:false},function(queue){
console.log(' [*] Waiting for messages. To exit press CTRL+C')
queue.subscribe(function(msg){
console.log(" [x] Received from MYQUEUE %s",msg.data.toString('utf-8'));
payload = msg.data.toString('utf-8');
// HOW DOES THIS NOW GET SENT VIA WEBSOCKETS ??
});
});
});
使用此代码,我可以成功订阅 Rabbit 中的队列并接收发送到队列的任何消息。同样,我可以将 websocket 客户端(例如浏览器)连接到服务器并发送/接收消息。但是......如何在指示的点将 Rabbit 队列消息的有效负载作为 websocket 消息发送(“现在如何通过 WEBSOCKETS 发送”)?我认为这与陷入错误的回调有关,或者它们需要以某种方式嵌套......?
或者,如果这可以在 Python 中更容易地完成(通过 Autobahn 和 pika),那就太好了。
谢谢 !