RabbitMQ和Sails.js

kk4*_*5kk 6 messaging event-driven rabbitmq node.js sails.js

我在使用带有Sails应用程序的RabbitMQ时遇到了麻烦.我不确定订户代码的放置位置.我正在尝试建立一个通知系统,以便当管理员批准用户的数据请求时,用户的仪表板将弹出类似于Facebook弹出通知的通知.问题是,将用户代码放在仪表板控制器的显示路径中似乎永远不会抓取已发布的消息.

任何建议将不胜感激.目前使用rabbit.js包连接到RabbitMQ.

sgr*_*454 5

要回答原始问题,如果由于某种原因想要使用Rabbit MQ而不是Sails的内置资源丰富的pubsub,最好的方法是使用rabbit.js.

首先,npm install rabbit.js.

然后,在你的Sails项目的config/sockets.js中(从rabbit.js socket.io示例中大量借用):

var context = require('rabbit.js').createContext();
module.exports = {

     onConnect: function(session, socket) {
        var pub = context.socket('PUB');
        var sub = context.socket('SUB');

        socket.on('disconnect', function() {
          pub.close();
          sub.close();
        });

        // NB we have to adapt between the APIs
        sub.setEncoding('utf8');
        socket.on('message', function(msg) {
          pub.write(msg, 'utf8');
        });
        sub.on('data', function(msg) {
          socket.send(msg);
        });
        sub.connect('chat');
        pub.connect('chat');

    }

}
Run Code Online (Sandbox Code Playgroud)