import { connectedUsers } from './state'; interface WsMessage { [key: string]: unknown; type: string; } export function broadcastToServer(serverId: string, message: WsMessage, excludeOderId?: string): void { console.log(`Broadcasting to server ${serverId}, excluding ${excludeOderId}:`, message.type); connectedUsers.forEach((user) => { if (user.serverIds.has(serverId) && user.oderId !== excludeOderId) { console.log(` -> Sending to ${user.displayName} (${user.oderId})`); user.ws.send(JSON.stringify(message)); } }); } export function notifyServerOwner(ownerId: string, message: WsMessage): void { const owner = findUserByOderId(ownerId); if (owner) { owner.ws.send(JSON.stringify(message)); } } export function notifyUser(oderId: string, message: WsMessage): void { const user = findUserByOderId(oderId); if (user) { user.ws.send(JSON.stringify(message)); } } export function findUserByOderId(oderId: string) { return Array.from(connectedUsers.values()).find(user => user.oderId === oderId); }