2015-04-27 79 views
1

我无法弄清楚如何使用ZMQ订阅特定的“频道”关于其pub/sub功能。ZMQ pub/sub订阅

这里是出版商:

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?

+0

你的意思是即使你做sub.subscribe('pub'),你什么都没得到? – zeFrenchy

+0

pub和sub不在同一个文件或程序中... –

+0

这实际上并不相关。我所说的是,因为你的发布者发送一个以字符串'pub'开始的消息,订阅'pub'应该在订户端产生消息。所有订阅都在用户端设置了一个过滤器。 – zeFrenchy

回答

2

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

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

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

相关问题