javascript - Node/Javascript 仅发送更改的值

标签 javascript node.js

我正在编写一个简单的应用程序,其中我将值发送到由pot-meter(可变电阻器)给出的mqtt代理。我想要完成的事情是我只发送更改的值以节省带宽。我正在尝试 Object.observe,但这没有任何作用。有人可以帮助我吗?

我的代码:

var analogValue = 0;

every((0.5).second(), function() {
    analogValue = my.sensor.analogRead();
    var values = {values:[{key:'resistance', value: analogValue}]}

    //another experiment here
    var arr = ['resitance', analogValue];
    Array.observe(arr, function(changes) {
      console.log(changes);
    });
    arr[1] = analogValue

    console.log('sent ',values,'to ',thingTopic)
    client.publish(thingTopic,  JSON.stringify(values));
});

var o = [analogValue];
Object.observe(o, function (changes) {
  console.log(changes);
  //eventually publish only changes to broker here
})
o.name = [analogValue]

最佳答案

您不需要使用Object.observe。您只需保存最后一次测量结果并检查新测量结果即可。像这样:

// I'm assuming that any actual measurement will be different than 0
var lastMeasurement = 0;

every((0.5).second(), function() {
    var analogValue = my.sensor.analogRead();
    if (lastMeasurement !== analogValue) {
        // the new value is different
        var values = {values:[{key:'resistance', value: analogValue}]};
        client.publish(thingTopic,  JSON.stringify(values));

        // update the last measurement value
        lastMeasurement = analogValue;
    }
});

关于javascript - Node/Javascript 仅发送更改的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833681/

相关文章:

javascript - 为非 Typescript 类声明 Typescript 接口(interface)

javascript - 无法通过 SSH 连接到 MySQL

javascript - Node.js 服务器重启基础知识错误处理

node.js - ArangoDB 插入速度极慢

node.js - 插入 Mongoose 集合并导出模型

javascript - select2 jquery 插件重置具有预选项目的选择元素

javascript - 使用 jquery 更改 id 并删除点击事件

javascript - "match is null"仅在服务器 - jQuery 1.x

javascript - NodeJs Crypto - MD5 哈希不正确

node.js - super 测试/Mocha 错误: global leak detected: path