我对带有 node 和 zmq 的基本 pubsub 应用程序有一个奇怪的问题:
客户端正在向代理发布字符串,问题是代理只接收第一行。在网络级别,我注意到只有第一条消息被发送,然后对 .send() 函数的下一次调用无效(没有发送数据包)所以我认为问题出在客户端/发布者中。我使用了官方指南中提供的示例代码,效果很好,我的代码中唯一的区别是我使用原型来具有可重用的结构。(我没有粘贴订阅者的代码,因为不相关,并删除了一些其他不相关的东西)
客户/出版商的相关部分:
Publisher = function(zmq, pport) {
this.logread = spawn('tail', ['-n0', '-f', '/var/log/auth.log']);
this.publisher = zmq.socket('req');
this.pport = pport;
};
Publisher.prototype.start = function() {
var self = this;
this.publisher.connect('tcp://127.0.0.1:' + this.pport);
this.logread.stdout.on('data', function(data){
self.publisher.send(data.toString());
console.log(data.toString());
});
};
经纪人的相关部分:
Broker = function(zmq, bpport, bsport) {
this.server = zmq.socket('rep');
this.bpport = bpport;
this.bsport = bsport;
};
Broker.prototype.start = function() {
this.server.on('message', function(request) {
console.log(request.toString());
});
this.server.bind('tcp://127.0.0.1:' + this.bsport, function(err) {
if (err)
console.log(err);
});
};