UNPKG

traffic-monitor-mqtt

Version:

Zentrales Traffic Monitoring via MQTT für Node.js Anwendungen

46 lines (45 loc) 1.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createExpressMiddleware = createExpressMiddleware; const debug_1 = __importDefault(require("debug")); const log = (0, debug_1.default)('traffic-monitor:express'); function createExpressMiddleware(eventBatcher, clientConfig) { return function trafficMonitorMiddleware(req, res, next) { const startTime = Date.now(); // Capture response data const originalEnd = res.end; const chunks = []; // Typesicherer Wrapper für res.end res.end = function (chunk, encoding, callback) { if (chunk) { chunks.push(Buffer.from(chunk)); } const executionTime = Date.now() - startTime; const responseSize = chunks.reduce((acc, chunk) => acc + chunk.length, 0); const event = { timestamp: new Date().toISOString(), clientInfo: clientConfig, operationType: 'http:incoming', targetSystem: `express:${req.hostname}`, performance: { executionTimeMs: executionTime, payloadSizeBytes: responseSize }, details: { method: req.method, path: req.path, statusCode: res.statusCode, requestSize: parseInt(req.get('content-length') || '0') } }; eventBatcher.addEvent(event); // Stelle sicher, dass encoding einen Wert hat const safeEncoding = encoding || 'utf8'; return originalEnd.call(res, chunk, safeEncoding, callback); }; next(); }; }