【发布时间】:2016-12-02 13:04:33
【问题描述】:
如果socket.send() 在发布者中仅使用一次,则zmq 订阅者订阅消息失败。
在发布者中使用以下代码时,订阅者能够订阅消息:
var zmq = require('zmq')
, sock = zmq.socket('pub')
sock.bindSync('tcp://127.0.0.1:3000');
var message = {"test" : true};
setInterval(function(){
sock.send(['notify_anomaly', JSON.stringify(message)]);
},1000);
但是如果在发布者代码中去掉setInterval就不行了,如下:
var zmq = require('zmq')
, sock = zmq.socket('pub')
sock.bindSync('tcp://127.0.0.1:3000');
var message = {"test" : true};
sock.send(['notify_anomaly', JSON.stringify(message)]);
【问题讨论】:
-
那么不要删除
setInterval?巧合的是,如果我拔掉电源线,我的电脑就会停止工作。 -
我相信这是“慢木匠”的问题。订阅者总是会错过第一条消息,除非发布者等待订阅者连接后再发送。 zguide.zeromq.org/page:all#toc13
标签: node.js zeromq publish-subscribe