I'm setting up a WebSocket server on my NestJS backend, and when I try subscribing on the default 'message' event type, the method handleMessage()
doesn't get triggered.
The listenForMessages()
method however works (which is triggered after the init of the server). Does anyone know why the decorator @SubscribeMessage('message')
doesn't work?
@WebSocketGateway()
export class AppWebsocketGateway implements OnGatewayInit, OnGatewayDisconnect {
private clientIds = new Map<string, string>();
// @ts-ignore
@WebSocketServer() server: Server;
private logger: Logger = new Logger('WebsocketGateway');
constructor(private readonly evseService: EvseService) {
}
listenForMessages() {
this.server.on('connection', (ws) => {
ws.on('message', (e) => {
console.log(e);
});
});
this.logger.log('message received');
}
@SubscribeMessage('message')
handleMessage(@ConnectedSocket() client: any, payload: any): void {
this.logger.log('I received a message from the client!');
this.server.emit('msgToClient', payload);
}
afterInit(server: Server) {
this.logger.log('Init');
this.listenForMessages();
}
handleDisconnect(@ConnectedSocket() client: any) {
this.logger.log(`Client disconnected: ${client.id}`);
}
}