Python zeromq REP节点将仅获取第一条消息(Req,REP模式)

Python zeromq REP节点将仅获取第一条消息(Req,REP模式),python,node.js,zeromq,Python,Node.js,Zeromq,我有一个nodejs应用程序,可以监听来自客户端的消息(python应用程序)。 我用于通过zmq进行通信的模式是REQ/REP模式。 主应用程序应该从许多客户端获取消息。它不会回复他们,只会收到消息。 问题是主应用程序只会获取第一条消息,而下一条消息不会显示在nodejs应用程序控制台中 换句话说,每次我启动nodejs应用程序时,我只收到一条消息 这是我的密码: Nodejs应用程序 var responder = zmq.socket('rep'); responder.on('messa

我有一个nodejs应用程序,可以监听来自客户端的消息(python应用程序)。 我用于通过zmq进行通信的模式是REQ/REP模式。 主应用程序应该从许多客户端获取消息。它不会回复他们,只会收到消息。 问题是主应用程序只会获取第一条消息,而下一条消息不会显示在nodejs应用程序控制台中

换句话说,每次我启动nodejs应用程序时,我只收到一条消息

这是我的密码:

Nodejs应用程序

var responder = zmq.socket('rep');
responder.on('message', function(request) {
    console.log(request);
    //here, it seems this function will be called just once!
});

responder.bind('tcp://127.0.0.1:8000', function(err) {
    if (err) {
        console.log(err);
    } else {
        console.log('Listening on 8000...');
    }
});
python(客户端)部分:

python部分位于函数内部。我可以在python控制台中看到“messagesent!”的输出(我指的是许多“messagesent!”)。
但是我在nodejs应用程序中看不到消息。只有第一条消息出现在nodejs控制台中。

当使用REQ/REP模式时,您实际上需要在收到下一个请求之前响应一个请求-您一次只处理一个请求

var responder = zmq.socket('rep');
responder.on('message', function(request) {
    console.log(request);
    responder.send('Here comes the reply!');
});
回应,你就会收到下一个。如果您不想响应,那么您需要选择req/rep之外的其他套接字对-例如:push/pull,或者如果您希望同时处理多个请求,可以查看xreq/xrep(路由器/经销商)

如果有疑问,请在中查找每个套接字类型的发送/接收模式

var responder = zmq.socket('rep');
responder.on('message', function(request) {
    console.log(request);
    responder.send('Here comes the reply!');
});