Add Server-Timing header to WADO Proxy
This commit is contained in:
parent
27296a8bca
commit
dde2a981b2
@ -4,6 +4,10 @@ Package.describe({
|
|||||||
version: '0.0.1'
|
version: '0.0.1'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Npm.depends({
|
||||||
|
'performance-now': '2.1.0'
|
||||||
|
});
|
||||||
|
|
||||||
Package.onUse(function(api) {
|
Package.onUse(function(api) {
|
||||||
api.versionsFrom('1.4');
|
api.versionsFrom('1.4');
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { OHIF } from 'meteor/ohif:core';
|
|||||||
const url = require("url");
|
const url = require("url");
|
||||||
const http = require("http");
|
const http = require("http");
|
||||||
const https = require("https");
|
const https = require("https");
|
||||||
const querystring = require("querystring");
|
const now = require("performance-now")
|
||||||
|
|
||||||
const doAuth = Meteor.users.find().count() ? true : false;
|
const doAuth = Meteor.users.find().count() ? true : false;
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ Router.route(Settings.uri.replace(OHIF.utils.absoluteUrl(), ''), function() {
|
|||||||
const response = this.response;
|
const response = this.response;
|
||||||
const params = this.params;
|
const params = this.params;
|
||||||
|
|
||||||
|
let start = now();
|
||||||
let user;
|
let user;
|
||||||
if (doAuth) {
|
if (doAuth) {
|
||||||
user = authenticateUser(request);
|
user = authenticateUser(request);
|
||||||
@ -43,6 +44,10 @@ Router.route(Settings.uri.replace(OHIF.utils.absoluteUrl(), ''), function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let end = now();
|
||||||
|
const authenticationTime = end - start;
|
||||||
|
|
||||||
|
start = now();
|
||||||
|
|
||||||
// TODO: Merge this with ohif-study-list? There is a circular dependency now...
|
// TODO: Merge this with ohif-study-list? There is a circular dependency now...
|
||||||
const server = Servers.findOne(params.query.serverId);
|
const server = Servers.findOne(params.query.serverId);
|
||||||
@ -67,6 +72,7 @@ Router.route(Settings.uri.replace(OHIF.utils.absoluteUrl(), ''), function() {
|
|||||||
console.log(request.url);
|
console.log(request.url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
start = now();
|
||||||
if (requestOpt.logTiming) {
|
if (requestOpt.logTiming) {
|
||||||
console.time(request.url);
|
console.time(request.url);
|
||||||
}
|
}
|
||||||
@ -110,11 +116,27 @@ Router.route(Settings.uri.replace(OHIF.utils.absoluteUrl(), ''), function() {
|
|||||||
options.auth = requestOpt.auth;
|
options.auth = requestOpt.auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end = now();
|
||||||
|
const prepRequestTime = end - start;
|
||||||
|
|
||||||
// Use Node's HTTP API to send a request to the PACS
|
// Use Node's HTTP API to send a request to the PACS
|
||||||
const proxyRequest = requester(options, proxyResponse => {
|
const proxyRequest = requester(options, proxyResponse => {
|
||||||
|
console.log(JSON.stringify(proxyResponse, null, 2));
|
||||||
// When we receive data from the PACS, stream it as the
|
// When we receive data from the PACS, stream it as the
|
||||||
// response to the original request.
|
// response to the original request.
|
||||||
// console.log(`Got response: ${proxyResponse.statusCode}`);
|
// console.log(`Got response: ${proxyResponse.statusCode}`);
|
||||||
|
end = now();
|
||||||
|
const proxyReqTime = end - start;
|
||||||
|
const totalProxyTime = authenticationTime + prepRequestTime + proxyReqTime;
|
||||||
|
const serverTimingHeaders = `
|
||||||
|
auth=${authenticationTime}; "Authenticate User",
|
||||||
|
prep-req=${prepRequestTime}; "Prepare Request Headers",
|
||||||
|
proxy-req=${proxyReqTime}; "Request to WADO URI",
|
||||||
|
total-proxy=${totalProxyTime}; "Total",
|
||||||
|
`.replace(/\n/g, '');
|
||||||
|
|
||||||
|
proxyResponse.headers['Server-Timing'] = serverTimingHeaders;
|
||||||
|
|
||||||
response.writeHead(proxyResponse.statusCode, proxyResponse.headers);
|
response.writeHead(proxyResponse.statusCode, proxyResponse.headers);
|
||||||
|
|
||||||
if (requestOpt.logTiming) {
|
if (requestOpt.logTiming) {
|
||||||
@ -126,7 +148,20 @@ Router.route(Settings.uri.replace(OHIF.utils.absoluteUrl(), ''), function() {
|
|||||||
|
|
||||||
// If our request to the PACS fails, log the error message
|
// If our request to the PACS fails, log the error message
|
||||||
proxyRequest.on('error', error => {
|
proxyRequest.on('error', error => {
|
||||||
response.writeHead(500);
|
end = now();
|
||||||
|
const proxyReqTime = end - start;
|
||||||
|
const totalProxyTime = authenticationTime + prepRequestTime + proxyReqTime;
|
||||||
|
console.timeEnd(request.url);
|
||||||
|
const serverTimingHeaders = {
|
||||||
|
'Server-Timing': `
|
||||||
|
auth=${authenticationTime}; "Authenticate User",
|
||||||
|
prep-req=${prepRequestTime}; "Prepare Request Headers",
|
||||||
|
proxy-req=${proxyReqTime}; "Request to WADO URI",
|
||||||
|
total-proxy=${totalProxyTime}; "Total",
|
||||||
|
`.replace(/\n/g, '')
|
||||||
|
};
|
||||||
|
|
||||||
|
response.writeHead(500, serverTimingHeaders);
|
||||||
response.end(`Error: Problem with request to PACS: ${error.message}\n`);
|
response.end(`Error: Problem with request to PACS: ${error.message}\n`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user