发送快速node.send(msg)时,节点红色挂起

时间:2018-06-28 06:31:25

标签: node.js node-red

我正在努力解决节点红色的节点配置问题。 我做了一个节点,它有一个输入和一个输出。每次输入获取任何类型的有效负载消息时,它都会执行文件读取,然后将内容扔出输出。 问题是,当我以0.01秒的间隔发送输入信号时,节点红色流编辑器(Web界面)挂起!我发现这是

node.send(msg)

导致问题的原因,因为如果只是将消息放在

console.log(msg)

一切正常。

当node-red挂起时,我唯一能使它再次“活动”的就是删除流json文件。

我收到此错误:

28 Jun 08:22:43 - [red] Uncaught Exception:
28 Jun 08:22:43 - Error: EMFILE: too many open files, open

快速打开,读取和关闭文件的节点红色是否存在限制?

这是我的.js源代码:

   node.on('input', function(msg){


        fs.readFile(path.location,(err, data) => {
            if (err) throw err;
            if(name === 'Mains current') {
                data = {payload: data/1000*(-1), topic: msg.topic};
            }
            else {
                data = {payload: data/1000, topic: msg.topic};
            }
            node.send(data);
        })        
    })

1 个答案:

答案 0 :(得分:0)

我解决了! 我做了一个忙碌的旗帜;

 var busy = false;
 node.on('input', function(msg){


        if (busy){
            console.log('busy');
            return;
        } 
        busy = true;
            fs.readFile(path.location,(err, data) => {
                if (err) throw err;
                if(name === 'Mains current') {
                    data = {payload: data/1000*(-1), topic: msg.topic};
                }
                else {
                    data = {payload: data/1000, topic: msg.topic};
                }
                node.send(data);
                busy = false;

            })        
    })