Skip to content

Commit

Permalink
add session count
Browse files Browse the repository at this point in the history
  • Loading branch information
notjuliet committed Oct 11, 2024
1 parent 04dd12d commit 1d3a41d
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,34 @@ import { FastifyInstance } from "fastify";
import type { AppContext } from "./index.js";
import { GetPostsInterface, GetPostsSchema } from "./lib/schemas.js";

let ipSet: Record<string, number> = {};
const serverState = (sessionCount: number) =>
`{"$type": "serverState", "sessionCount": ${sessionCount}}`;

export const createRouter = (server: FastifyInstance, ctx: AppContext) => {
server.register(async () => {
const stream = server.websocketServer;
stream.setMaxListeners(0);

server.get("/subscribe", { websocket: true }, (socket) => {
server.get("/subscribe", { websocket: true }, (socket, req) => {
if (!ipSet[req.ip]) {
ipSet[req.ip] = 1;
stream.emit("message", serverState(Object.keys(ipSet).length));
} else {
ipSet[req.ip] += 1;
}
socket.send(serverState(Object.keys(ipSet).length));
const callback = (data: any) => {
socket.send(String(data));
};
stream.on("message", callback);
socket.on("close", () => {
stream.removeListener("data", callback);
ipSet[req.ip] -= 1;
if (ipSet[req.ip] == 0) {
delete ipSet[req.ip];
stream.emit("message", serverState(Object.keys(ipSet).length));
}
});
});
});
Expand Down

0 comments on commit 1d3a41d

Please sign in to comment.