From b7ad824eb59e1f06bdd0f6e320657f889886c520 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sat, 15 Feb 2025 02:19:14 -0800 Subject: [PATCH] backend: better socket handling --- src/MediaPlayer.ts | 18 +++++++++++------- src/server.ts | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/MediaPlayer.ts b/src/MediaPlayer.ts index ff14ad1..0eece0a 100644 --- a/src/MediaPlayer.ts +++ b/src/MediaPlayer.ts @@ -17,20 +17,24 @@ export class MediaPlayer { private dataBuffer: string = ''; constructor() { + // Create a random string of length 5 + const socketFilename = Math.random().toString(36).substring(2, 10); + const socketPath = `/tmp/mpv-${socketFilename}`; + console.log("Starting player process"); this.playerProcess = spawn("mpv", [ "--no-video", "--no-terminal", "--idle=yes", - "--input-ipc-server=/tmp/mpv-socket" + "--input-ipc-server=" + socketPath ]); this.socket = new Socket(); this.playerProcess.on("spawn", () => { - console.log("Player process spawned, opening socket"); + console.log(`Player process spawned, opening socket @ ${socketPath}`); setTimeout(() => { - this.connectToSocket(); + this.connectToSocket(socketPath); }, 200); }); } @@ -123,13 +127,13 @@ export class MediaPlayer { }); } - private connectToSocket() { - this.socket.connect("/tmp/mpv-socket"); + private connectToSocket(path: string) { + this.socket.connect(path); this.socket.on("data", data => this.receiveData(data.toString())); } private handleEvent(event: string, data: any) { - console.log("Event [" + event + "]: " + JSON.stringify(data, null, 2)); + console.log("MPV Event [" + event + "]: " + JSON.stringify(data, null, 2)); // Notify all subscribers this.eventSubscribers.forEach(subscriber => { @@ -156,7 +160,7 @@ export class MediaPlayer { this.pendingCommands.delete(response.request_id); } } else if (response.event) { - this.handleEvent(response.event, response.data); + this.handleEvent(response.event, response); } else { console.log(response); } diff --git a/src/server.ts b/src/server.ts index e53a7a6..83afcb3 100644 --- a/src/server.ts +++ b/src/server.ts @@ -78,10 +78,11 @@ apiRouter.post("/volume", async (req, res) => { }); apiRouter.ws("/events", (ws, req) => { - console.log(req.query); + console.log("Events client connected"); mediaPlayer.subscribe(ws); ws.on("close", () => { + console.log("Events client disconnected"); mediaPlayer.unsubscribe(ws); }); });