30 lines
883 B
TypeScript
30 lines
883 B
TypeScript
import type { Server, Socket } from 'socket.io';
|
|
|
|
export function setupSocketHandlers(io: Server): void {
|
|
io.on('connection', (socket: Socket) => {
|
|
console.log(`[Socket] Connected: ${socket.id}`);
|
|
|
|
// 특정 업무 상세 방에 참여 (우측 모니터 패널용)
|
|
socket.on('join:task', (taskId: string) => {
|
|
socket.join(`task:${taskId}`);
|
|
});
|
|
|
|
socket.on('leave:task', (taskId: string) => {
|
|
socket.leave(`task:${taskId}`);
|
|
});
|
|
|
|
socket.on('disconnect', () => {
|
|
console.log(`[Socket] Disconnected: ${socket.id}`);
|
|
});
|
|
});
|
|
}
|
|
|
|
// 업무 변경 시 해당 방에 브로드캐스트 (라우터에서 호출)
|
|
export function emitTaskUpdated(io: Server, taskId: string, data: unknown): void {
|
|
io.to(`task:${taskId}`).emit('task:updated', data);
|
|
}
|
|
|
|
export function emitTaskListRefresh(io: Server): void {
|
|
io.emit('tasks:refresh');
|
|
}
|