2015-04-27 2 views
1

У меня возникли проблемы с поиском, как подписаться на особенно «канал» с ZMQ в отношении его функциональности pub/sub.ZMQ pub/sub subscribe

Вот издатель:

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 ничего, кроме пустая строка (''), абонент не получает сообщений от издателя.

Как правильно настроить pub/sub с ZMQ?

+0

Вы имеете в виду, даже если вы делаете sub.subscribe ('pub'), вы ничего не получаете? – zeFrenchy

+0

pub и sub arent в том же файле или программе ... –

+0

Это не актуально. Я говорю, так как ваш издатель отправляет сообщение, начинающееся со строки «pub», подписка на «pub» должна давать сообщения на стороне абонента. Все подписки - это настройка фильтра на стороне абонента. – zeFrenchy

ответ

2

sub.subscribe('topic') добавляет фильтр в гнездо вашего пользователя, чтобы получать сообщения, начинающиеся со строки topic. Вы можете добавить несколько фильтров, вызвав их более одного раза. sub.subscribe('') удаляет любой существующий фильтр, чтобы ваш подписчик получал все сообщения, отправленные издателем.

В вашем коде с использованием sub.subscribe('pub') будут выдаваться сообщения на стороне абонента.

pub/sub example в zeromq.node GitHub - хорошее место, чтобы посмотреть, как работают подписки.

Смежные вопросы