title: Sending RabbitMQ messages via websockets
body: <p>Looking for some code samples to solve this problem :-</p>
  
  <p>Would like to write some code (Python or Javascript) that would act as a subscriber to a RabbitMQ queue so that on receiving a message it would broadcast the message via websockets to any connected client. </p>
  
  <p>I've looked at Autobahn and node.js (using "<a href="https://github.com/postwait/node-amqp" rel="noreferrer">amqp</a>"  and "<a href="https://github.com/einaros/ws" rel="noreferrer">ws</a>" ) but cannot get things to work as needed. Here's the server code in javascript using node.js:-</p>
  
  <pre><code>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 ??
              });
      });
  });
  </code></pre>
  
  <p>Using this code, I can successfully subscribe to a queue in Rabbit and receive any messages that are sent to the queue. Similarly, I can connect a websocket client (e.g. a browser) to the server and send/receive messages. BUT ... how can I send the payload of the Rabbit queue message as a websocket message at the point indicated ("HOW DOES THIS NOW GET SENT VIA WEBSOCKETS") ? I think it's something to do with being stuck in the wrong callback or they need to be nested somehow ...?</p>
  
  <p>Alternatively, if this can be done easier in Python (via Autobahn and pika) that would be great.</p>
  
  <p>Thanks !</p>