在ZMQ请求 – 回复模式中监听连接/连接事件

在ZMQ请求 – 回复模式的回复或“服务器”中,我想要听取请求者连接到我的回复/服务器。

我有这个代码:

var zmqConfig = {...}; var replier = zmq.socket('rep'); var address = 'tcp://'.concat(zmqConfig.host).concat(':').concat(zmqConfig.port); replier.bind(address, function (err) { if (err) { } }); replier.on('message', function () { // this is firing }); replier.on('connect',function(){ // but this is NOT firing }); replier.on('connection',function(){ // neither is this }); 

但是我的请求者的确在连接并向我的回复者发送消息,如下所示:

  var requester = zmq.socket('req'); requester.connect('tcp://...'); // this should invoke the connect/connection event above??? 

“连接”事件触发连接的一面,这不是你在这里寻找的东西。 你想要的是“接受”事件,当绑定套接字接受来自对等体的新连接时触发这个事件。

为了捕获这个事件,你必须在连接发生之前调用你的套接字上的monitor()方法…大概在你bind()你的套接字之前。 你放入monitor()方法的计时器不会影响它触发哪些事件,只要它触发它们。

这里是你的代码修改以这种方式工作:

 var zmqConfig = {...}; var replier = zmq.socket('rep'); replier.monitor(50); // just picked a time var address = 'tcp://'.concat(zmqConfig.host).concat(':').concat(zmqConfig.port); replier.bind(address, function (err) { if (err) { } }); replier.on('message', function () { // this is firing }); replier.on('accept', function(){ // this should *now* fire when you accept a connection from a peer });