Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 23x 23x 23x 23x 23x 6x 2x 2x 6x 6x 6x 6x 6x 6x 6x 6x 10x 10x 10x 7x 6x | import {
OnGatewayConnection,
OnGatewayDisconnect,
WebSocketGateway,
WebSocketServer,
} from '@nestjs/websockets';
import { Server, WebSocket } from 'ws';
import { Logger, OnApplicationShutdown } from '@nestjs/common';
import { WebSocketEvent } from './websocket.events';
@WebSocketGateway({
cors: {
origin: '*',
},
})
export class EventsGateway
implements OnGatewayConnection, OnGatewayDisconnect, OnApplicationShutdown
{
@WebSocketServer()
server: Server;
private readonly logger = new Logger(EventsGateway.name);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
handleConnection(client: WebSocket) {
this.logger.log('Client connected to WebSocket');
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
handleDisconnect(client: WebSocket) {
this.logger.log('Client disconnected from WebSocket');
}
async onApplicationShutdown(signal?: string) {
this.logger.log(
`Shutting down WebSocket gateway on signal: ${signal || 'N/A'}`,
);
Iif (!this.server) {
return;
}
for (const client of this.server.clients) {
Iif (client.readyState === WebSocket.OPEN) {
client.terminate();
}
}
await new Promise<void>((resolve, reject) => {
this.server.close((err) => {
Iif (err && err.message !== 'The server is not running') {
this.logger.error('Error closing WebSocket server:', err);
return reject(err);
}
this.logger.log('WebSocket server closed or was not running.');
resolve();
});
});
}
sendToAll<E extends WebSocketEvent>(event: E['event'], data: E['data']) {
const message = JSON.stringify({ event, data });
this.logger.log(`Broadcasting WebSocket event '${event}'`);
this.server.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
}
}
|