import { DyNTS_Msg_Events_Service } from '../../messaging/_services/msg-events.service'; import { DyNTS_GlobalService } from '../../../_services/core/global.service'; /** * Default Socket Events Service * Extends messaging events service with GlobalService socket server integration */ export class DyNTS_Default_SocketEvents_Service extends DyNTS_Msg_Events_Service { static override getInstance(): DyNTS_Default_SocketEvents_Service { return DyNTS_Default_SocketEvents_Service.getSingletonInstance(); } /** * Get socket server from GlobalService * Returns null if not configured (graceful degradation) */ protected override getSocketServer(): any | null { try { // Attempt to get socket server from GlobalService if it exists // This would require adding getSocketServer to GlobalService // For now, return null (no real-time events) return null; } catch (error) { // Socket server not available - messaging still works without real-time return null; } } /** * Emit to specific user * Override for custom user targeting */ emitToUser(userId: string, event: string, data: any): void { try { const socketServer = this.getSocketServer(); if (socketServer && socketServer.emitToUser) { socketServer.emitToUser(userId, event, data); } } catch (error) { // Graceful degradation - messaging still works without real-time } } /** * Emit to room/group * Override for custom room targeting */ emitToRoom(roomId: string, event: string, data: any): void { try { const socketServer = this.getSocketServer(); if (socketServer && socketServer.emitToRoom) { socketServer.emitToRoom(roomId, event, data); } } catch (error) { // Graceful degradation - messaging still works without real-time } } }