我试图理解为什么我在zmq订户的on('data')方法中使用console.log时,为什么会在终端中收到这些警告/信息:

<SlowBuffer 7b 22 74 79 70 65 22 3a 22 75 70 64 61 74 65 4c 69 67 68 74 73 22 2c 22 63 6f 6e 66 69 67 22 3a 22 31 31 31 30 31 31 30 30 31 31 30 30 31 31 31 30 22 7d ...>


代码是这样的:

subscriber.on("message", function(data){
    //if (debug)
    //  console.log(data);

    let msg = JSON.parse(data);

    if (ready)
    {
        sendString(msg.config); //config is a string, not an array!
    }

});


如果上面的控制台语句未注释掉,我将收到SlowBuffer消息。更糟糕的是,似乎连接有时也会停滞。我认为这是zmq的核心优势之一-例如如果连接断开或变得不响应,它将尝试重新连接。

您在上述代码中看到任何提示或问题吗?再说一遍,什么是SlowBuffer-为什么在使用console.log时会发生?

最佳答案

您没有正确使用缓冲方法,我不认为这是zeroMQ模块的错误。

About Slow Buffer Class

您应该在代码中尝试的是

if (debug){
 console.log(data.toString('hex'));
}


如果它是缓冲区,您也无法原始解析数据

使用.toJSON()方法或使用.toString('utf8')使其成为字符串,然后再使用JSON.parse

关于node.js - SlowBuffer消息,如果在zmq on('data'...)中使用console.log,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22018077/

10-14 17:52
查看更多