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": {