Reputation: 231
I have a zmq publisher and subscriber code in nodejs.My issue is that at times my subscriber does not receive any messages.Below is my code
publisher:
var zmq = require('zmq'),
socket = zmq.socket('push'),
socket.bind(publisherUrl, function (err) {
if (err) {
console.log(err);
}
else {
console.log("Listening on ..." + publisherUrl)
}
});
function PublishEvent(msg) {
setTimeout(function () {
socket.send(msg);
}, 100);
}
subscriber:
var zmq = require('zmq'),
events = require('events'),
subscriber = zmq.socket('pull');
subscriber.on("message", function (reply) {
if (reply.toString() !== '{}'){
console.log("info", 'Received message:' + reply.toString());
}
})
subscriber.connect(publisherUrl)
Its working fine sometimes but fails to receive messages at some cases. I'm stuck here any help regarding this will be much helpful.
Upvotes: 0
Views: 1266
Reputation: 12065
Your publisher should look like this:
var zmq = require('zmq')
var publisher = zmq.socket('pub')
publisher.bind('tcp://*:8688', function(err) {
if(err)
console.log(err)
else
console.log("Listening on 8688...")
})
for (var i=1 ; i<10 ; i++)
setTimeout(function() {
console.log('sent');
publisher.send("Hello there!")
}, 1000 * i)
process.on('SIGINT', function() {
publisher.close()
console.log('\nClosed')
})
and your subscriber should look like this:
var zmq = require('zmq')
var subscriber = zmq.socket('sub')
subscriber.on("message", function(reply) {
console.log('Received message: ', reply.toString());
})
subscriber.connect("tcp://localhost:8688")
subscriber.subscribe("")
process.on('SIGINT', function() {
subscriber.close()
console.log('\nClosed')
})
source: https://github.com/imatix/zguide/tree/master/examples/Node.js
Upvotes: 2