Websocket library
A base for handling websocket connections including implementation of RedisAdapter using Redis library and Monitoring using Monitoring library
Dependencies
For this library to work, you need to install the following peer dependencies:
| @nestjs/common | ^9.0.0 |
| @nestjs/core | ^9.0.0 |
| @betsys-nestjs/logger | ^2.0.0 |
| @betsys-nestjs/monitoring | ^4.0.0 |
| @betsys-nestjs/redis | ^1.0.0 |
| @nestjs/terminus | ^9.0.0 |
| reflect-metadata | >=0.1.13 <0.2.0 |
| rxjs | >=7.8.0 <8.0.0 |
Usage
To start using this library simply import WebsocketModule and use it like this:
import { WebsocketModule } from '@betsys-nestjs/websocket'
import { Module } from "@nestjs/common";
@Module({
imports: [
WebsocketModule.forRoot()
]
})
class AppModule {
}
Then you can start using the module exports.
AbstractGateway and WebsocketMonitoringService usage example:
import {
ConnectedSocket,
WebSocketGateway,
AbstractGateway,
WebsocketMonitoringService
} from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
@WebSocketGateway({
transports: ['websocket'],
namespace: 'test',
})
export class TestSocketGateway extends AbstractGateway {
constructor(
private readonly monitoring: WebsocketMonitoringService,
) {
super(monitoring);
}
afterInit(server: Server): void {
super.afterInit(server);
}
async handleConnection(@ConnectedSocket() socket: Socket): Promise<void> {
try {
await super.handleConnection(socket);
} catch (e) {
socket.disconnect(true);
}
}
async handleDisconnect(@ConnectedSocket() socket: Socket): Promise<void> {
try {
super.handleDisconnect(socket);
} finally {
socket.leave('');
}
}
}
RedisAdapter usage example:
import { RedisIoAdapter } from '@betsys/websocket';
app.useWebSocketAdapter(new RedisIoAdapter(app, redisConfig));
- Simply add this line to application bootstrap() method.