This is a NodeJS implementation for rep, I think for pub it is the same.
As Jakob MΓΆllΓ₯s said, you need to use a monitor.
const zmq = require('zmq') , rep = zmq.socket('rep'); let counter = 0; rep.bind('tcp://*:5560', function (err) { if (err) { console.log(err); } else { console.log("Listening on 5560β¦"); rep.monitor(500, 0); } }); // Register to monitoring events rep.on('connect', function (fd, ep) { console.log('connect, endpoint:', ep); }); rep.on('connect_delay', function (fd, ep) { console.log('connect_delay, endpoint:', ep); }); rep.on('connect_retry', function (fd, ep) { console.log('connect_retry, endpoint:', ep); }); rep.on('listen', function (fd, ep) { console.log('listen, endpoint:', ep); }); rep.on('bind_error', function (fd, ep) { console.log('bind_error, endpoint:', ep); }); rep.on('accept', function (fd, ep) { console.log('accept, endpoint:', ep); counter++; }); rep.on('accept_error', function (fd, ep) { console.log('accept_error, endpoint:', ep); }); rep.on('close', function (fd, ep) { console.log('close, endpoint:', ep); }); rep.on('close_error', function (fd, ep) { console.log('close_error, endpoint:', ep); }); rep.on('disconnect', function (fd, ep) { console.log('disconnect, endpoint:', ep); counter--; }); // Handle monitor error rep.on('monitor_error', function(err) { console.log('Error in monitoring: %s, will restart monitoring in 5 seconds', err); setTimeout(function() { rep.monitor(500, 0); }, 5000); }); rep.on('message', function (msg) { console.log(`recieve: `, JSON.parse(msg)); rep.send(JSON.stringify({ "status": FAIL, "code": 3666 })); });
Prefixes
recieve: { method: 'login', login: 'a', password: 'b1' } accept, endpoint: tcp://0.0.0.0:5560 accept, endpoint: tcp://0.0.0.0:5560 login: a, password: b1 recieve: { method: 'login', login: 'a', password: 'b1' } disconnect, endpoint: tcp://0.0.0.0:5560 login: a, password: b1 disconnect, endpoint: tcp://0.0.0.0:5560