mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add RED.util.generateId and ensure HTTP node adds proper id
This commit is contained in:
parent
5cda08e7b0
commit
4248d20f39
@ -60,12 +60,14 @@ module.exports = function(RED) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.callback = function(req,res) {
|
this.callback = function(req,res) {
|
||||||
|
var msgid = RED.util.generateId();
|
||||||
|
res._msgid = msgid;
|
||||||
if (node.method.match(/(^post$|^delete$|^put$|^options$)/)) {
|
if (node.method.match(/(^post$|^delete$|^put$|^options$)/)) {
|
||||||
node.send({req:req,res:res,payload:req.body});
|
node.send({_msgid:msgid,req:req,res:res,payload:req.body});
|
||||||
} else if (node.method == "get") {
|
} else if (node.method == "get") {
|
||||||
node.send({req:req,res:res,payload:req.query});
|
node.send({_msgid:msgid,req:req,res:res,payload:req.query});
|
||||||
} else {
|
} else {
|
||||||
node.send({req:req,res:res});
|
node.send({_msgid:msgid,req:req,res:res});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -90,14 +92,14 @@ module.exports = function(RED) {
|
|||||||
metricsHandler = function(req, res, next) {
|
metricsHandler = function(req, res, next) {
|
||||||
var startAt = process.hrtime();
|
var startAt = process.hrtime();
|
||||||
onHeaders(res, function() {
|
onHeaders(res, function() {
|
||||||
if (res._msgId) {
|
if (res._msgid) {
|
||||||
var diff = process.hrtime(startAt);
|
var diff = process.hrtime(startAt);
|
||||||
var ms = diff[0] * 1e3 + diff[1] * 1e-6;
|
var ms = diff[0] * 1e3 + diff[1] * 1e-6;
|
||||||
var metricResponseTime = ms.toFixed(3);
|
var metricResponseTime = ms.toFixed(3);
|
||||||
var metricContentLength = res._headers["content-length"];
|
var metricContentLength = res._headers["content-length"];
|
||||||
//assuming that _id has been set for res._metrics in HttpOut node!
|
//assuming that _id has been set for res._metrics in HttpOut node!
|
||||||
node.metric("response.time.millis", {_id:res._msgId} , metricResponseTime);
|
node.metric("response.time.millis", {_msgid:res._msgid} , metricResponseTime);
|
||||||
node.metric("response.content-length.bytes", {_id:res._msgId} , metricContentLength);
|
node.metric("response.content-length.bytes", {_msgid:res._msgid} , metricContentLength);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
next();
|
next();
|
||||||
@ -167,7 +169,6 @@ module.exports = function(RED) {
|
|||||||
msg.res.set('content-length', len);
|
msg.res.set('content-length', len);
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.res._msgId = msg._id;
|
|
||||||
msg.res.send(statusCode,msg.payload);
|
msg.res.send(statusCode,msg.payload);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -96,10 +96,6 @@ Node.prototype.close = function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function constructUniqueIdentifier() {
|
|
||||||
return (1+Math.random()*4294967295).toString(16);
|
|
||||||
}
|
|
||||||
|
|
||||||
Node.prototype.send = function(msg) {
|
Node.prototype.send = function(msg) {
|
||||||
var msgSent = false;
|
var msgSent = false;
|
||||||
var node;
|
var node;
|
||||||
@ -112,7 +108,7 @@ Node.prototype.send = function(msg) {
|
|||||||
// TODO: pre-load flows.get calls - cannot do in constructor
|
// TODO: pre-load flows.get calls - cannot do in constructor
|
||||||
// as not all nodes are defined at that point
|
// as not all nodes are defined at that point
|
||||||
if (!msg._msgid) {
|
if (!msg._msgid) {
|
||||||
msg._msgid = constructUniqueIdentifier();
|
msg._msgid = redUtil.generateId();
|
||||||
}
|
}
|
||||||
this.metric("send",msg);
|
this.metric("send",msg);
|
||||||
node = flows.get(this._wire);
|
node = flows.get(this._wire);
|
||||||
@ -171,7 +167,7 @@ Node.prototype.send = function(msg) {
|
|||||||
}
|
}
|
||||||
/* istanbul ignore else */
|
/* istanbul ignore else */
|
||||||
if (!sentMessageId) {
|
if (!sentMessageId) {
|
||||||
sentMessageId = constructUniqueIdentifier();
|
sentMessageId = redUtil.generateId();
|
||||||
}
|
}
|
||||||
this.metric("send",{_msgid:sentMessageId});
|
this.metric("send",{_msgid:sentMessageId});
|
||||||
|
|
||||||
@ -190,7 +186,7 @@ Node.prototype.receive = function(msg) {
|
|||||||
msg = {};
|
msg = {};
|
||||||
}
|
}
|
||||||
if (!msg._msgid) {
|
if (!msg._msgid) {
|
||||||
msg._msgid = constructUniqueIdentifier();
|
msg._msgid = redUtil.generateId();
|
||||||
}
|
}
|
||||||
this.metric("receive",msg);
|
this.metric("receive",msg);
|
||||||
try {
|
try {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright 2014 IBM Corp.
|
* Copyright 2014, 2015 IBM Corp.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
var clone = require("clone");
|
var clone = require("clone");
|
||||||
|
|
||||||
|
function generateId() {
|
||||||
|
return (1+Math.random()*4294967295).toString(16);
|
||||||
|
}
|
||||||
|
|
||||||
function ensureString(o) {
|
function ensureString(o) {
|
||||||
if (Buffer.isBuffer(o)) {
|
if (Buffer.isBuffer(o)) {
|
||||||
return o.toString();
|
return o.toString();
|
||||||
@ -103,5 +107,6 @@ module.exports = {
|
|||||||
ensureString: ensureString,
|
ensureString: ensureString,
|
||||||
ensureBuffer: ensureBuffer,
|
ensureBuffer: ensureBuffer,
|
||||||
cloneMessage: cloneMessage,
|
cloneMessage: cloneMessage,
|
||||||
compareObjects: compareObjects
|
compareObjects: compareObjects,
|
||||||
|
generateId: generateId
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright 2014 IBM Corp.
|
* Copyright 2014, 2015 IBM Corp.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,13 @@ var should = require("should");
|
|||||||
var util = require("../../red/util");
|
var util = require("../../red/util");
|
||||||
|
|
||||||
describe("red/util", function() {
|
describe("red/util", function() {
|
||||||
// only test for things not tested by overall grunt
|
describe('generateId', function() {
|
||||||
|
it('generates an id', function() {
|
||||||
|
var id = util.generateId();
|
||||||
|
var id2 = util.generateId();
|
||||||
|
id.should.not.eql(id2);
|
||||||
|
});
|
||||||
|
});
|
||||||
describe('compareObjects', function() {
|
describe('compareObjects', function() {
|
||||||
it('unequal arrays are unequal', function() {
|
it('unequal arrays are unequal', function() {
|
||||||
util.compareObjects(["a"],"a").should.equal(false);
|
util.compareObjects(["a"],"a").should.equal(false);
|
||||||
|
Loading…
Reference in New Issue
Block a user