在zeromq javascript中接收超时

Timing out on a receive in zeromq javascript

本文关键字:超时 zeromq javascript      更新时间:2023-09-26

我是node-js编程的新手,所以也许我没有看到一些明显的东西。zmq中的接收如下:

socket.on('message', function()
{
     console.log("Message received: ");
     console.log(arguments);
});

我如何把一个zmq。轮询,或使用zmq接收。设置NOBLOCK标志,或者在超时后关闭带有linger=0的套接字?

链接到任何文档将是感激的。关于轮询的zmq指南示例,只使用异步回调,而不使用轮询器或超时。是不是只有一个setTimeout和一个socket.close() ?

我用的是:

var messageReceived = false;
s.on('message', function() { console.log(arguments); messageReceived=true; });                                                                                
setTimeout(function() {
            if (!messageReceived)
            {
                console.log("Nothing received. Exiting...");
                s.close();
            }   
        }, 5000);

工作。但我不确定这是否是推荐的方法。另外,对于生产来说,node-zeromq的安全性如何?

当您将zeromq与node一起使用时,您可以"免费"获得一些东西。具体来说,由于node是从头开始构建的,不阻塞并使用异步方法,因此poll()变得冗余,NOBLOCK也是如此。当我开始这样做时,我遇到了同样的困惑,它们只是没有在节点绑定中暴露出来,似乎它们应该暴露出来,直到我理解绑定是按照"节点方式"构建的,因此它们是不需要的。

到目前为止,你的计时方法是好的;这取决于你需要什么,但我基本上就是从这里开始的。