zeromq路由器,经销商消息编码表

2024-05-08 00:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个应用程序,它是nodejs(主应用程序)和python(客户机)应用程序,我想用zmq路由器和经销商模式相互通信。在

问题是我无法读取从客户端发送到nodejs(路由器)应用程序的消息。 它编码了一些方式。在

代码如下所示:

var responder = zmq.socket('router');
responder.on('message', function(request) {
    console.log(request);
    // i could not read the messages here.its obfuscated 
});

responder.bind('tcp://127.0.0.1:8000', function(err) {
    if (err) {
        console.log(err);
    } else {
        console.log('Listening on 8000...');
    }
});

Python:

^{pr2}$

Tags: log应用程序客户端客户机onrequestnodejs模式
2条回答

对于您的应用程序,推拉似乎更合适:

var zmq = require('zmq');

var responder = zmq.socket('pull');
responder.on('message', function(request) {
    console.log(request.toString());
    // Use `toString` to convert Buffer to string
});

responder.bind('tcp://127.0.0.1:8000', function(err) {
    if (err) {
        console.log(err);
    } else {
        console.log('Listening on 8000...');
    }
});

^{pr2}$

如果您希望使用DEALER/ROUTER套接字,那么该消息实际上是作为回调函数的第二个参数给出的。在

var responder = zmq.socket('router');
responder.on('message', function(header, body) {
    console.log(body.toString('utf8'));
});

消息的格式是缓冲区,但可以使用.toString(encoding)将其转换为字符串

头包含一个标识,这允许您稍后将响应/应答路由回发出原始请求的正确发送者/请求者。在

相关问题 更多 >