cleanup
This commit is contained in:
parent
fabc70c036
commit
8df0a73034
58
src/index.ts
58
src/index.ts
@ -3,6 +3,12 @@ import express from "express";
|
|||||||
import http from "http";
|
import http from "http";
|
||||||
import { Server as SocketIO } from "socket.io";
|
import { Server as SocketIO } from "socket.io";
|
||||||
|
|
||||||
|
type UserToFollow = { clientId: string; username: string };
|
||||||
|
type OnUserFollowedPayload = {
|
||||||
|
userToFollow: UserToFollow;
|
||||||
|
action: "follow" | "unfollow";
|
||||||
|
};
|
||||||
|
|
||||||
const serverDebug = debug("server");
|
const serverDebug = debug("server");
|
||||||
const ioDebug = debug("io");
|
const ioDebug = debug("io");
|
||||||
const socketDebug = debug("socket");
|
const socketDebug = debug("socket");
|
||||||
@ -78,43 +84,31 @@ try {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on(
|
socket.on("on-user-follow", async (payload: OnUserFollowedPayload) => {
|
||||||
"on-user-follow",
|
const roomID = `follow_${payload.userToFollow.clientId}`;
|
||||||
async (payload: {
|
switch (payload.action) {
|
||||||
userToFollow: {
|
case "follow":
|
||||||
clientId: string;
|
await socket.join(roomID);
|
||||||
username: string;
|
const sockets = await io.in(roomID).fetchSockets();
|
||||||
};
|
|
||||||
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) {
|
if (sockets.length === 1) {
|
||||||
io.to(payload.userToFollow.clientId).emit("broadcast-follow");
|
io.to(payload.userToFollow.clientId).emit("broadcast-follow");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "unsubscribe":
|
case "unfollow":
|
||||||
console.log("unsubscribe");
|
await socket.leave(roomID);
|
||||||
await socket.leave(roomID);
|
const _sockets = await io.in(roomID).fetchSockets();
|
||||||
const _sockets = await io.in(roomID).fetchSockets();
|
|
||||||
console.log(_sockets.map((s) => s.id));
|
|
||||||
|
|
||||||
if (_sockets.length === 0) {
|
if (_sockets.length === 0) {
|
||||||
io.to(payload.userToFollow.clientId).emit("broadcast-unfollow");
|
io.to(payload.userToFollow.clientId).emit("broadcast-unfollow");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|
||||||
|
// TODO follow-mode unfollow on disconnect?
|
||||||
socket.on("disconnecting", async () => {
|
socket.on("disconnecting", async () => {
|
||||||
socketDebug(`${socket.id} has disconnected`);
|
socketDebug(`${socket.id} has disconnected`);
|
||||||
for (const roomID in socket.rooms) {
|
for (const roomID in socket.rooms) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user