From fabc70c036203b04679fc5b659fc12e8a1a4a425 Mon Sep 17 00:00:00 2001 From: barnabasmolnar Date: Fri, 4 Aug 2023 02:54:22 +0200 Subject: [PATCH] [WIP] Follow mode POC. --- src/index.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/index.ts b/src/index.ts index 65cc345..7424a8c 100755 --- a/src/index.ts +++ b/src/index.ts @@ -78,6 +78,43 @@ try { }, ); + socket.on( + "on-user-follow", + async (payload: { + userToFollow: { + clientId: string; + username: string; + }; + action: "subscribe" | "unsubscribe"; + }) => { + const roomID = `follow_${payload.userToFollow.clientId}`; + switch (payload.action) { + case "subscribe": + console.log("subscribe"); + await socket.join(roomID); + const sockets = await io.in(roomID).fetchSockets(); + console.log(sockets.map((s) => s.id)); + + if (sockets.length === 1) { + io.to(payload.userToFollow.clientId).emit("broadcast-follow"); + } + + break; + case "unsubscribe": + console.log("unsubscribe"); + await socket.leave(roomID); + const _sockets = await io.in(roomID).fetchSockets(); + console.log(_sockets.map((s) => s.id)); + + if (_sockets.length === 0) { + io.to(payload.userToFollow.clientId).emit("broadcast-unfollow"); + } + + break; + } + }, + ); + socket.on("disconnecting", async () => { socketDebug(`${socket.id} has disconnected`); for (const roomID in socket.rooms) {