mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-01 19:21:34 -07:00
29 lines
812 B
TypeScript
29 lines
812 B
TypeScript
import net from 'node:net';
|
|
|
|
/**
|
|
* True when something is accepting connections on the unix socket / Windows
|
|
* named pipe (400 ms probe). Electron-free; shared by the sync CLI's
|
|
* running-app guard and the Windows mpv launch attach wait.
|
|
*/
|
|
export async function canConnectSocket(socketPath: string): Promise<boolean> {
|
|
return await new Promise<boolean>((resolve) => {
|
|
const socket = net.createConnection(socketPath);
|
|
let settled = false;
|
|
|
|
const finish = (value: boolean): void => {
|
|
if (settled) return;
|
|
settled = true;
|
|
try {
|
|
socket.destroy();
|
|
} catch {
|
|
// ignore
|
|
}
|
|
resolve(value);
|
|
};
|
|
|
|
socket.once('connect', () => finish(true));
|
|
socket.once('error', () => finish(false));
|
|
socket.setTimeout(400, () => finish(false));
|
|
});
|
|
}
|