socket-function 1.2.5 → 1.2.6
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 +1 -1
- package/src/webSocketServer.ts +13 -5
package/package.json
CHANGED
package/src/webSocketServer.ts
CHANGED
|
@@ -348,8 +348,19 @@ export async function startSocketServer(
|
|
|
348
348
|
});
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
let bound =
|
|
352
|
-
|
|
351
|
+
let bound = false;
|
|
352
|
+
// Honor an explicitly requested port first. A falsy port (0, the default) means
|
|
353
|
+
// "no preference" — skip straight to the scan so we land on a consistent port
|
|
354
|
+
// instead of an OS-assigned random one.
|
|
355
|
+
if (port) {
|
|
356
|
+
bound = await tryListen(port);
|
|
357
|
+
if (!bound && !config.useAvailablePortIfPortInUse) {
|
|
358
|
+
throw new Error(`Port ${port} is already in use (set useAvailablePortIfPortInUse to fall back to another port)`);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// Scan upwards from PORT_SCAN_START for the first free port, so restarts land on
|
|
362
|
+
// predictable ports.
|
|
363
|
+
if (!bound) {
|
|
353
364
|
for (let candidate = PORT_SCAN_START; candidate < PORT_SCAN_START + PORT_SCAN_COUNT; candidate++) {
|
|
354
365
|
if (candidate === port) continue;
|
|
355
366
|
if (await tryListen(candidate)) {
|
|
@@ -362,9 +373,6 @@ export async function startSocketServer(
|
|
|
362
373
|
throw new Error(`Could not find an available port in range ${PORT_SCAN_START}-${PORT_SCAN_START + PORT_SCAN_COUNT - 1} (requested ${config.port})`);
|
|
363
374
|
}
|
|
364
375
|
}
|
|
365
|
-
if (!bound) {
|
|
366
|
-
throw new Error(`Port ${port} is already in use (set useAvailablePortIfPortInUse to fall back to another port)`);
|
|
367
|
-
}
|
|
368
376
|
|
|
369
377
|
port = (realServer.address() as net.AddressInfo).port;
|
|
370
378
|
|