ZMQ 发布/订阅

Ale*_*lls 5 sockets tcp zeromq node.js

我无法弄清楚如何使用 ZMQ 订阅特定的“频道”的发布/订阅功能。

这是发布者:

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

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

setInterval(function(){
    pub.send('pub msg');
},500);
Run Code Online (Sandbox Code Playgroud)

这是订阅者:

 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);
 }
Run Code Online (Sandbox Code Playgroud)

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

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

zeF*_*chy 7

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

在您的代码中,使用sub.subscribe('pub')将在订阅者端产生消息。

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