socket-function 0.52.0 → 0.54.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socket-function",
3
- "version": "0.52.0",
3
+ "version": "0.54.0",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "note1": "note on node-forge fork, see https://github.com/digitalbazaar/forge/issues/744 for details",
@@ -167,7 +167,12 @@ export const runServerHooks = measureWrap(async function runServerHooks(
167
167
  ): Promise<HookContext> {
168
168
  let hookContext: HookContext = { call: callType, onResult: [] };
169
169
  for (let hook of globalHooks.concat(hooks.hooks || [])) {
170
+ let time = Date.now();
170
171
  await _setSocketContext(caller, () => hook(hookContext));
172
+ time = Date.now() - time;
173
+ if (time > 100) {
174
+ console.warn(`Slow (${formatTime(time)}) server hook: ${JSON.stringify(hook.name || hook.toString().slice(0, 100))} for ${callType.classGuid}.${callType.functionName}(...)`);
175
+ }
171
176
  // NOTE: See HookContext.overrideResult for why we don't break here
172
177
  }
173
178
  return hookContext;
@@ -75,6 +75,7 @@ export async function startSocketServer(
75
75
  ca: getTrustedCertificates(),
76
76
  // Attempt to disable sessions, because they make SNI significantly harder to parse.
77
77
  secureOptions: require("node:constants").SSL_OP_NO_TICKET,
78
+ keepAlive: false,
78
79
  };
79
80
  if (!httpsServerLast) {
80
81
  httpsServerLast = https.createServer(lastOptions);
@@ -99,17 +100,18 @@ export async function startSocketServer(
99
100
  });
100
101
 
101
102
  httpsServer.on("connection", socket => {
103
+ let debug = (socket as any).remoteAddress + ":" + (socket as any).remotePort;
102
104
  if (!SocketFunction.silent) {
103
- console.log("Client connection established");
105
+ console.log(`HTTP server connection established ${debug}`);
104
106
  }
105
107
  socket.on("error", e => {
106
108
  if (!SocketFunction.silent) {
107
- console.log(`Client socket error ${e.message}`);
109
+ console.log(`HTTP server socket error for ${debug}, ${e.message}`);
108
110
  }
109
111
  });
110
112
  socket.on("close", () => {
111
113
  if (!SocketFunction.silent) {
112
- console.log("Client socket closed");
114
+ console.log(`HTTP server socket closed for ${debug}`);
113
115
  }
114
116
  });
115
117
  });
@@ -127,12 +129,6 @@ export async function startSocketServer(
127
129
  httpsServer.on("request", httpCallHandler);
128
130
 
129
131
  httpsServer.on("upgrade", (request, socket, upgradeHead) => {
130
- socket.on("error", e => {
131
- if (!SocketFunction.silent) {
132
- console.log(`Client socket error ${e.message}`);
133
- }
134
- });
135
-
136
132
  let originHeader = request.headers["origin"];
137
133
  if (originHeader) {
138
134
  try {
@@ -192,6 +188,9 @@ export async function startSocketServer(
192
188
  //console.log("Received TCP connection from " + socket.remoteAddress);
193
189
  const remoteAddress = socket.remoteAddress;
194
190
  function handleTLSHello(buffer: Buffer, packetCount: number): void | "more" {
191
+ if (!SocketFunction.silent) {
192
+ console.log(`Received TCP header packet from ${remoteAddress}, have ${buffer.length} bytes so far, ${packetCount} packets`);
193
+ }
195
194
  // All HTTPS requests start with 22, and no HTTP requests start with 22,
196
195
  // so we just need to read the first byte.
197
196
  let server: https.Server | http.Server;