From 99840b7ac2709319de13dd9f575f423c013088ed Mon Sep 17 00:00:00 2001 From: Pietro Brenna Date: Thu, 20 Feb 2020 11:47:45 +0100 Subject: [PATCH] Aggiunto nodo debounce --- my-debounce.html | 33 +++++++++++++++++++++++++++++++++ my-debounce.js | 27 +++++++++++++++++++++++++++ package.json | 3 ++- 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 my-debounce.html create mode 100644 my-debounce.js diff --git a/my-debounce.html b/my-debounce.html new file mode 100644 index 0000000..4c446c0 --- /dev/null +++ b/my-debounce.html @@ -0,0 +1,33 @@ + + + + + + diff --git a/my-debounce.js b/my-debounce.js new file mode 100644 index 0000000..ca49ae6 --- /dev/null +++ b/my-debounce.js @@ -0,0 +1,27 @@ + +module.exports = function (RED) { + "use strict"; + + function XMPPServerNode(n) { + RED.nodes.createNode(this, n); + this.delay_msec = n.delay; + //this.by_value = n.by_value; + this.recv = new Map(); + this.on("input", msg => { + let msg_json = JSON.stringify(msg.payload); + let now = new Date(); + for (let [key, val] of this.recv) { + if ((now.getTime() - val.getTime()) > this.delay_msec) { + this.recv.delete(key); + } + } + if (!this.recv.has(msg_json)) { + this.send(msg); + this.recv.set(msg_json, now); + } + }); + } + + RED.nodes.registerType("my-debounce", XMPPServerNode); + +} diff --git a/package.json b/package.json index a37f3b5..c516ef2 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "keywords": [ "node-red", "xmpp" ], "node-red" : { "nodes" : { - "xmpp": "92-xmpp.js" + "xmpp": "92-xmpp.js", + "my-debounce": "my-debounce.js" } }, "author": {