ZMQ pub/sub 订阅

ZMQ pub/sub subscribe

关于 ZMQ 的 pub/sub 功能,我无法弄清楚如何订阅一个特别的 "channel"。

这里是发布者:

var zmq = require('zmq');
var pub = zmq.socket('pub');

pub.bindSync('tcp://127.0.0.1:5555');

setInterval(function(){
    pub.send('pub msg');
},500);

这里是订阅者:

 var sub = zmq.socket('sub');
 sub.connect('tcp://127.0.0.1:5555');

 sub.subscribe('');  //herein lies the question

 sub.on('message',function(msg){
        console.log('Received msg:',msg);
 }

这按原样工作,但问题是如果我将 sub.subscribe 的参数更改为空字符串 ('') 以外的任何内容,订阅者将不会收到来自发布者的任何消息。

如何使用 ZMQ 正确配置 pub/sub?

sub.subscribe('topic') 向您的订阅者套接字添加一个过滤器,以便您只接收以字符串 topic 开头的消息。您可以通过多次调用来添加多个过滤器。 sub.subscribe('') 删除所有现有过滤器,以便您的订阅者获得发布者发送的所有消息。

在您的代码中使用 sub.subscribe('pub') 会在订阅方产生消息。

zeromq.node GitHub 中的 pub/sub example 是了解订阅工作原理的好地方。