| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { Logger } from '@nestjs/common';
- import {
- ConnectedSocket,
- MessageBody,
- OnGatewayConnection,
- OnGatewayDisconnect,
- SubscribeMessage,
- WebSocketGateway,
- WebSocketServer,
- } from '@nestjs/websockets';
- import { Server, Socket } from 'socket.io';
- @WebSocketGateway({
- cors: {
- origin: '*',
- },
- })
- export class EventsGateway implements OnGatewayConnection, OnGatewayDisconnect {
- @WebSocketServer()
- server: Server;
- private logger: Logger = new Logger('EventsGateway');
- handleConnection(client: Socket, ...args: any[]) {
- this.logger.log(`Client connected: ${client.id}`);
- }
- handleDisconnect(client: Socket) {
- this.logger.log(`Client disconnected: ${client.id}`);
- }
- @SubscribeMessage('join')
- handleJoin(
- @MessageBody() data: { room: string },
- @ConnectedSocket() client: Socket,
- ) {
- client.join(data.room);
- this.logger.log(`Client ${client.id} joined room: ${data.room}`);
- return { event: 'joined', data: { room: data.room } };
- }
- @SubscribeMessage('leave')
- handleLeave(
- @MessageBody() data: { room: string },
- @ConnectedSocket() client: Socket,
- ) {
- client.leave(data.room);
- this.logger.log(`Client ${client.id} left room: ${data.room}`);
- return { event: 'left', data: { room: data.room } };
- }
- // Broadcast methods for different events
- emitTaskUpdate(taskData: any) {
- this.server.emit('taskUpdate', taskData);
- }
- emitSettingsUpdate(settingsData: any) {
- this.server.emit('settingsUpdate', settingsData);
- }
- emitFileUpdate(fileData: any) {
- this.server.emit('fileUpdate', fileData);
- }
- emitMaintenanceUpdate(maintenanceData: any) {
- this.server.emit('maintenanceUpdate', maintenanceData);
- }
- emitWatcherUpdate(watcherData: any) {
- this.server.emit('watcherUpdate', watcherData);
- }
- emitToRoom(room: string, event: string, data: any) {
- this.server.to(room).emit(event, data);
- }
- }
|