d8714b2086
CI / Generate TypeScript types (push) Successful in 11s
CI / Generate TypeScript types (pull_request) Successful in 23s
CI / Server unit tests (push) Successful in 21s
CI / Build client (push) Successful in 34s
CI / Server unit tests (pull_request) Successful in 21s
CI / Build server (push) Successful in 1m4s
CI / Build server (pull_request) Successful in 25s
CI / Build client (pull_request) Successful in 1m40s
CI / Playwright E2E tests (push) Successful in 1m19s
CI / Build and push Docker image (push) Has been skipped
CI / Notify (push) Successful in 10s
CI / Playwright E2E tests (pull_request) Successful in 1m18s
CI / Build and push Docker image (pull_request) Has been skipped
CI / Notify (pull_request) Has been skipped
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { DefaultEventsMap, Server } from "socket.io";
|
|
|
|
let io: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
|
|
|
|
export const initWebsocket = (server: any) => {
|
|
io = new Server(server, {
|
|
cors: {
|
|
origin: "*",
|
|
},
|
|
});
|
|
io.on("connection", (socket) => {
|
|
console.log(`New client connected: ${socket.id}`);
|
|
|
|
socket.on("join", (login: string) => {
|
|
if (login && typeof login === "string") {
|
|
socket.join(`user:${login}`);
|
|
}
|
|
});
|
|
|
|
socket.on("message", (message) => {
|
|
io.emit("message", message);
|
|
});
|
|
|
|
socket.on("disconnect", () => {
|
|
console.log(`Client disconnected: ${socket.id}`);
|
|
});
|
|
});
|
|
return io;
|
|
}
|
|
|
|
export const getWebsocket = () => io;
|
|
|
|
/** Pošle event konkrétnímu přihlášenému uživateli (pokud je připojen). */
|
|
export const emitToUser = (login: string, event: string, data: unknown) => {
|
|
if (!io) return;
|
|
io.to(`user:${login}`).emit(event, data);
|
|
} |