@nsshunt/stsappframework 3.0.82 → 3.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/middleware/serverNetworkMiddleware.js +54 -20
- package/dist/middleware/serverNetworkMiddleware.js.map +1 -1
- package/dist/testing/app.js +35 -2
- package/dist/testing/app.js.map +1 -1
- package/package.json +1 -1
- package/runtest1.sh +1 -1
- package/src/middleware/serverNetworkMiddleware.ts +57 -20
- package/src/testing/app.ts +49 -1
- package/types/middleware/serverNetworkMiddleware.d.ts.map +1 -1
- package/types/testing/app.d.ts +1 -0
|
@@ -72,6 +72,19 @@ class ServerNetworkMiddleware extends stsutils_1.STSOptionsBase {
|
|
|
72
72
|
};
|
|
73
73
|
this.#socketCollection[workingSocketRecord.id] = workingSocketRecord;
|
|
74
74
|
this.#debug(`Adding new socket to recordset: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray);
|
|
75
|
+
/*
|
|
76
|
+
workingSocketRecord.socket.on('data', () => {
|
|
77
|
+
workingSocketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
78
|
+
if (workingSocketRecord) {
|
|
79
|
+
this.#debug(`Socket close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
80
|
+
this.UpdateNetworkStats(workingSocketRecord, 'socket_data', req);
|
|
81
|
+
delete this.#socketCollection[workingSocketRecord.id];
|
|
82
|
+
this.#debug(`Socket removed from recordset: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
83
|
+
} else {
|
|
84
|
+
this.#debug(`Socket close event: Could not find socket within recordset`.magenta)
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
*/
|
|
75
88
|
workingSocketRecord.socket.on('close', () => {
|
|
76
89
|
workingSocketRecord = this.GetSocketRecord(workingSocketRecord.socket);
|
|
77
90
|
if (workingSocketRecord) {
|
|
@@ -94,27 +107,48 @@ class ServerNetworkMiddleware extends stsutils_1.STSOptionsBase {
|
|
|
94
107
|
this.#debug(`Socket end event: Could not find socket within recordset`.magenta);
|
|
95
108
|
}
|
|
96
109
|
});
|
|
97
|
-
req.on('end', () => {
|
|
98
|
-
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
99
|
-
if (workingSocketRecord) {
|
|
100
|
-
this.#debug(`Request end event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray);
|
|
101
|
-
this.UpdateNetworkStats(workingSocketRecord, 'req_end', req);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.#debug(`Request end event: Could not find socket within recordset`.magenta);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
req.on('close', () => {
|
|
108
|
-
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
109
|
-
if (workingSocketRecord) {
|
|
110
|
-
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray);
|
|
111
|
-
this.UpdateNetworkStats(workingSocketRecord, 'req_close', req);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
this.#debug(`Request close event: Could not find socket within recordset`.magenta);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
110
|
}
|
|
111
|
+
req.on('end', () => {
|
|
112
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
113
|
+
if (workingSocketRecord) {
|
|
114
|
+
this.#debug(`Request end event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray);
|
|
115
|
+
this.UpdateNetworkStats(workingSocketRecord, 'req_end', req);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.#debug(`Request end event: Could not find socket within recordset`.magenta);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
req.on('close', () => {
|
|
122
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
123
|
+
if (workingSocketRecord) {
|
|
124
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray);
|
|
125
|
+
this.UpdateNetworkStats(workingSocketRecord, 'req_close', req);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
/*
|
|
132
|
+
req.on('data', () => {
|
|
133
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
134
|
+
if (workingSocketRecord) {
|
|
135
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
136
|
+
this.UpdateNetworkStats(workingSocketRecord, 'data', req);
|
|
137
|
+
} else {
|
|
138
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
req.on('readable', () => {
|
|
143
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
144
|
+
if (workingSocketRecord) {
|
|
145
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
146
|
+
this.UpdateNetworkStats(workingSocketRecord, 'readable', req);
|
|
147
|
+
} else {
|
|
148
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
*/
|
|
118
152
|
this.UpdateNetworkStats(workingSocketRecord, 'middleware', req);
|
|
119
153
|
next();
|
|
120
154
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverNetworkMiddleware.js","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";;;;;;AAGA,+CAA2C;AAE3C,kDAA+B;AAC/B,gDAAmD;
|
|
1
|
+
{"version":3,"file":"serverNetworkMiddleware.js","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";;;;;;AAGA,+CAA2C;AAE3C,kDAA+B;AAC/B,gDAAmD;AAEnD,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEjD,IAAY,gCAEX;AAFD,WAAY,gCAAgC;IACxC,uGAAmE,CAAA,CAAC,oBAAoB;AAC5F,CAAC,EAFW,gCAAgC,gDAAhC,gCAAgC,QAE3C;AAsBD,MAAa,uBAAwB,SAAQ,yBAAc;IAEvD,YAAY,GAAgB,IAAI,0BAAW,EAAE,CAAC;IAC9C,iBAAiB,GAAkC,EAAG,CAAC;IACvD,GAAG,GAAW,CAAC,CAAC;IAChB,MAAM,CAAM;IAEZ,YAAY,OAAiC;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;SAC3B;IACL,CAAC;IAED,EAAE,CAAC,SAA2C,EAAE,UAA4C;QACxF,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,GAAG,CAAC,MAAc,EAAwB,EAAE;QACvD,KAAK,MAAM,CAAC,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YACnE,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE;gBAChC,OAAO,YAAY,CAAC;aACvB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAA;IAED,kBAAkB,GAAG,CAAC,mBAAkC,EAAE,SAAiB,EAAE,GAAY,EAAE,EAAE;QACzF,mBAAmB,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAClD,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAAC;QAE1C,mBAAmB,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QAC5D,mBAAmB,CAAC,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QAElE,mBAAmB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC;QAChH,mBAAmB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAEzH,gKAAgK;QAChK,sKAAsK;QAEtK,MAAM,wBAAwB,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAC5D,OAAQ,wBAAgC,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gCAAgC,CAAC,+BAA+B,EAAE,wBAAwB,CAAC,CAAC;QAEnH,mBAAmB,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QACzE,mBAAmB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;IACnF,CAAC,CAAA;IAED,UAAU,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC7D,IAAI,mBAAmB,GAAyB,IAAI,CAAC;QAErD,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,EAAE;YACtB,IAAI,CAAC,GAAG,EAAE,CAAA;YACV,mBAAmB,GAAG;gBAClB,EAAE,EAAE,GAAI,IAAI,CAAC,OAAoC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC/E,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,gBAAgB,EAAE,CAAC;gBACnB,mBAAmB,EAAE,CAAC;gBACtB,aAAa,EAAE,CAAC;gBAChB,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,CAAC;gBACnB,mBAAmB,EAAE,CAAC;gBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,EAAE;aAChB,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC;YAErE,IAAI,CAAC,MAAM,CAAC,wCAAwC,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;YAEtI;;;;;;;;;;;;cAYE;YAEF,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAE,mBAAqC,CAAC,MAAM,CAAC,CAAC;gBAC1F,IAAI,mBAAmB,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,4BAA4B,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;oBAC1H,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;oBAClE,OAAO,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,uCAAuC,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;iBACxI;qBAAM;oBACH,IAAI,CAAC,MAAM,CAAC,4DAA4D,CAAC,OAAO,CAAC,CAAA;iBACpF;YACL,CAAC,CAAC,CAAC;YAEH,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACtC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAE,mBAAqC,CAAC,MAAM,CAAC,CAAC;gBAC1F,IAAI,mBAAmB,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,0BAA0B,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;oBACxH,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;iBACnE;qBAAM;oBACH,IAAI,CAAC,MAAM,CAAC,0DAA0D,CAAC,OAAO,CAAC,CAAA;iBAClF;YACL,CAAC,CAAC,CAAC;SACN;QAED,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACf,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,2BAA2B,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;gBACzH,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;aAChE;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,2DAA2D,CAAC,OAAO,CAAC,CAAA;aACnF;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACjB,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,6BAA6B,mBAAmB,CAAC,EAAE,oBAAoB,mBAAmB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC3H,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;aAClE;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,6DAA6D,CAAC,OAAO,CAAC,CAAA;aACrF;QACL,CAAC,CAAC,CAAC;QAEH;;;;;;;;;;;;;;;;;;;;UAoBE;QAEF,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAEhE,IAAI,EAAE,CAAC;IACX,CAAC,CAAA;CACJ;AA7JD,0DA6JC"}
|
package/dist/testing/app.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
5
|
};
|
|
@@ -7,13 +8,45 @@ const appConfig_1 = require("./appConfig");
|
|
|
7
8
|
const __1 = require("./..");
|
|
8
9
|
const appWorkerWSS_1 = require("./appWorkerWSS");
|
|
9
10
|
const cluster_1 = __importDefault(require("cluster"));
|
|
10
|
-
const
|
|
11
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
12
|
+
//const pid = process.pid;
|
|
13
|
+
const pid = 523552;
|
|
14
|
+
const filePath = `/proc/${pid}/net/dev`;
|
|
15
|
+
function getNetworkUsage() {
|
|
16
|
+
try {
|
|
17
|
+
// Read the contents of the /proc/[pid]/net/dev file
|
|
18
|
+
const content = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
19
|
+
// Process the content to extract relevant information
|
|
20
|
+
const lines = content.trim().split('\n');
|
|
21
|
+
const headers1 = lines[0].split('|').map(header => header.trim());
|
|
22
|
+
const headers2 = lines[1].split('|').map(header => header.trim());
|
|
23
|
+
const data = lines[2].split('|').map(value => value.trim());
|
|
24
|
+
console.log(data);
|
|
25
|
+
// Find the index of the relevant network statistics (e.g., bytes received and transmitted)
|
|
26
|
+
//const rxIndex = headers.indexOf('Receive');
|
|
27
|
+
//const txIndex = headers.indexOf('Transmit');
|
|
28
|
+
// Display network usage information
|
|
29
|
+
/*
|
|
30
|
+
console.log(`Network Usage for Process ${pid}:`);
|
|
31
|
+
console.log(` Incoming: ${data[rxIndex]} bytes`);
|
|
32
|
+
console.log(` Outgoing: ${data[txIndex]} bytes`);
|
|
33
|
+
*/
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
console.error('Error reading file:', err);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
11
39
|
if (cluster_1.default.isPrimary) {
|
|
12
40
|
new __1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, cluster_1.default.isPrimary)).SetupServer();
|
|
13
41
|
setInterval(function () {
|
|
14
|
-
|
|
42
|
+
/*
|
|
43
|
+
si.networkStats().then(data => {
|
|
15
44
|
console.log(data);
|
|
16
45
|
});
|
|
46
|
+
*/
|
|
47
|
+
getNetworkUsage();
|
|
48
|
+
//console.log(process.pid)
|
|
49
|
+
//getNetworkUsage()
|
|
17
50
|
}, 1000);
|
|
18
51
|
}
|
|
19
52
|
else {
|
package/dist/testing/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":";AAAA,wFAAwF,CAAE,UAAU;;;;;AAEpG,2CAAkD;AAClD,4BAAwC;AACxC,iDAA8C;AAE9C,sDAA8B;AAM9B,sDAAwB;AAExB,0BAA0B;AAC1B,MAAM,GAAG,GAAG,MAAM,CAAA;AAElB,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAExC,SAAS,eAAe;IACpB,IAAI;QACA,oDAAoD;QACpD,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElB,2FAA2F;QAC3F,6CAA6C;QAC7C,8CAA8C;QAE9C,oCAAoC;QACpC;;;;QAIA;KACH;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;KAC7C;AACL,CAAC;AAED,IAAI,iBAAO,CAAC,SAAS,EAAE;IACnB,IAAI,qBAAiB,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnF,WAAW,CAAC;QACR;;;;UAIE;QAEF,eAAe,EAAE,CAAA;QAEjB,0BAA0B;QAE1B,mBAAmB;IAEvB,CAAC,EAAE,IAAI,CAAC,CAAA;CAEX;KAAM;IACH,IAAI,4BAAa,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;CAClF"}
|
package/package.json
CHANGED
package/runtest1.sh
CHANGED
|
@@ -5,6 +5,7 @@ import { TinyEmitter } from 'tiny-emitter';
|
|
|
5
5
|
|
|
6
6
|
import debugModule from 'debug'
|
|
7
7
|
import { STSOptionsBase } from '@nsshunt/stsutils';
|
|
8
|
+
import { CompareSTSInstrumentControllerPluginKey } from '@nsshunt/stspublisherserver';
|
|
8
9
|
const debug = debugModule(`proc:${process.pid}`);
|
|
9
10
|
|
|
10
11
|
export enum ServerNetworkMiddlewareEventName {
|
|
@@ -105,6 +106,20 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
105
106
|
|
|
106
107
|
this.#debug(`Adding new socket to recordset: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
107
108
|
|
|
109
|
+
/*
|
|
110
|
+
workingSocketRecord.socket.on('data', () => {
|
|
111
|
+
workingSocketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
112
|
+
if (workingSocketRecord) {
|
|
113
|
+
this.#debug(`Socket close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
114
|
+
this.UpdateNetworkStats(workingSocketRecord, 'socket_data', req);
|
|
115
|
+
delete this.#socketCollection[workingSocketRecord.id];
|
|
116
|
+
this.#debug(`Socket removed from recordset: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
117
|
+
} else {
|
|
118
|
+
this.#debug(`Socket close event: Could not find socket within recordset`.magenta)
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
*/
|
|
122
|
+
|
|
108
123
|
workingSocketRecord.socket.on('close', () => {
|
|
109
124
|
workingSocketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
110
125
|
if (workingSocketRecord) {
|
|
@@ -126,28 +141,50 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
126
141
|
this.#debug(`Socket end event: Could not find socket within recordset`.magenta)
|
|
127
142
|
}
|
|
128
143
|
});
|
|
129
|
-
|
|
130
|
-
req.on('end', () => {
|
|
131
|
-
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
132
|
-
if (workingSocketRecord) {
|
|
133
|
-
this.#debug(`Request end event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
134
|
-
this.UpdateNetworkStats(workingSocketRecord, 'req_end', req);
|
|
135
|
-
} else {
|
|
136
|
-
this.#debug(`Request end event: Could not find socket within recordset`.magenta)
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
req.on('close', () => {
|
|
141
|
-
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
142
|
-
if (workingSocketRecord) {
|
|
143
|
-
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
144
|
-
this.UpdateNetworkStats(workingSocketRecord, 'req_close', req);
|
|
145
|
-
} else {
|
|
146
|
-
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
144
|
}
|
|
150
145
|
|
|
146
|
+
req.on('end', () => {
|
|
147
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
148
|
+
if (workingSocketRecord) {
|
|
149
|
+
this.#debug(`Request end event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
150
|
+
this.UpdateNetworkStats(workingSocketRecord, 'req_end', req);
|
|
151
|
+
} else {
|
|
152
|
+
this.#debug(`Request end event: Could not find socket within recordset`.magenta)
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
req.on('close', () => {
|
|
157
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
158
|
+
if (workingSocketRecord) {
|
|
159
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
160
|
+
this.UpdateNetworkStats(workingSocketRecord, 'req_close', req);
|
|
161
|
+
} else {
|
|
162
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
/*
|
|
167
|
+
req.on('data', () => {
|
|
168
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
169
|
+
if (workingSocketRecord) {
|
|
170
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
171
|
+
this.UpdateNetworkStats(workingSocketRecord, 'data', req);
|
|
172
|
+
} else {
|
|
173
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
req.on('readable', () => {
|
|
178
|
+
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
179
|
+
if (workingSocketRecord) {
|
|
180
|
+
this.#debug(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`.gray)
|
|
181
|
+
this.UpdateNetworkStats(workingSocketRecord, 'readable', req);
|
|
182
|
+
} else {
|
|
183
|
+
this.#debug(`Request close event: Could not find socket within recordset`.magenta)
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
*/
|
|
187
|
+
|
|
151
188
|
this.UpdateNetworkStats(workingSocketRecord, 'middleware', req);
|
|
152
189
|
|
|
153
190
|
next();
|
package/src/testing/app.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
|
|
1
3
|
import { ServiceConfigOptions } from './appConfig'
|
|
2
4
|
import { MasterProcessBase } from './..'
|
|
3
5
|
import { WorkerProcess } from './appWorkerWSS'
|
|
@@ -6,13 +8,59 @@ import cluster from 'cluster';
|
|
|
6
8
|
|
|
7
9
|
import si from 'systeminformation' // https://systeminformation.io/
|
|
8
10
|
|
|
11
|
+
import pidusage from 'pidusage'
|
|
12
|
+
|
|
13
|
+
import fs from 'node:fs'
|
|
14
|
+
|
|
15
|
+
//const pid = process.pid;
|
|
16
|
+
const pid = 523552
|
|
17
|
+
|
|
18
|
+
const filePath = `/proc/${pid}/net/dev`;
|
|
19
|
+
|
|
20
|
+
function getNetworkUsage() {
|
|
21
|
+
try {
|
|
22
|
+
// Read the contents of the /proc/[pid]/net/dev file
|
|
23
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
24
|
+
|
|
25
|
+
// Process the content to extract relevant information
|
|
26
|
+
const lines = content.trim().split('\n');
|
|
27
|
+
const headers1 = lines[0].split('|').map(header => header.trim());
|
|
28
|
+
const headers2 = lines[1].split('|').map(header => header.trim());
|
|
29
|
+
const data = lines[2].split('|').map(value => value.trim());
|
|
30
|
+
|
|
31
|
+
console.log(data);
|
|
32
|
+
|
|
33
|
+
// Find the index of the relevant network statistics (e.g., bytes received and transmitted)
|
|
34
|
+
//const rxIndex = headers.indexOf('Receive');
|
|
35
|
+
//const txIndex = headers.indexOf('Transmit');
|
|
36
|
+
|
|
37
|
+
// Display network usage information
|
|
38
|
+
/*
|
|
39
|
+
console.log(`Network Usage for Process ${pid}:`);
|
|
40
|
+
console.log(` Incoming: ${data[rxIndex]} bytes`);
|
|
41
|
+
console.log(` Outgoing: ${data[txIndex]} bytes`);
|
|
42
|
+
*/
|
|
43
|
+
} catch (err) {
|
|
44
|
+
console.error('Error reading file:', err);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
9
48
|
if (cluster.isPrimary) {
|
|
10
49
|
new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
|
|
11
50
|
|
|
12
51
|
setInterval(function() {
|
|
52
|
+
/*
|
|
13
53
|
si.networkStats().then(data => {
|
|
14
54
|
console.log(data);
|
|
15
|
-
})
|
|
55
|
+
});
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
getNetworkUsage()
|
|
59
|
+
|
|
60
|
+
//console.log(process.pid)
|
|
61
|
+
|
|
62
|
+
//getNetworkUsage()
|
|
63
|
+
|
|
16
64
|
}, 1000)
|
|
17
65
|
|
|
18
66
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverNetworkMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"serverNetworkMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,oBAAY,gCAAgC;IACxC,+BAA+B,oCAAoC;CACtE;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7E,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACvB;AAED,qBAAa,uBAAwB,SAAQ,cAAc;;gBAO3C,OAAO,EAAE,wBAAwB;IAS7C,EAAE,CAAC,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,gCAAgC;IAI5F,eAAe,WAAY,MAAM,KAAG,aAAa,GAAG,IAAI,CAOvD;IAED,kBAAkB,wBAAyB,aAAa,aAAa,MAAM,OAAO,OAAO,UAoBxF;IAED,UAAU,QAAS,OAAO,OAAO,QAAQ,QAAQ,YAAY,UAyG5D;CACJ"}
|
package/types/testing/app.d.ts
CHANGED