Aggiunto nodo debounce
parent
869b8b357b
commit
99840b7ac2
|
|
@ -0,0 +1,33 @@
|
|||
|
||||
<script type="text/html" data-template-name="my-debounce">
|
||||
<div class="form-row">
|
||||
<label for="node-input-delay"><i class="fa fa-wrench"></i> Delay</label>
|
||||
<input type="text" id="node-input-delay">
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
|
||||
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="my-debounce">
|
||||
<p>Deduplica messaggi per valore del payload entro <code>delay</code>.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
RED.nodes.registerType('my-debounce',{
|
||||
category: 'function',
|
||||
color: "#E6E0F8",
|
||||
defaults: {
|
||||
delay: { value: 1000, required: true, validate: RED.validators.number() },
|
||||
name: { value: "" }
|
||||
},
|
||||
inputs: 1,
|
||||
outputs: 1,
|
||||
icon: "timer.png",
|
||||
label: function() {
|
||||
return this.name || "my-debounce";
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
@ -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": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue