2.0.0 • Published 3 years ago

nestjs-socket-handlers-with-ack v2.0.0

Weekly downloads
14
License
MIT
Repository
github
Last release
3 years ago

nestjs-socket-handlers-with-ack

Gateway socket handler decorator with automatic acknowledgement callback call for NestJS 5.x applications.

Usage

Install this module with this command:

$ npm install --save nestjs-socket-handlers-with-ack

In your gateway:

import { WebSocketGateway } from '@nestjs/websockets';
import { SubscribeMessageWithAck } from 'nestjs-socket-handlers-with-ack';

@WebSocketGateway()
export class MyGateway {

    @SubscribeMessageWithAck('checkIsNumberOdd')
    async checkIsNumberOdd(socket: SocketIO.Socket, num: number): Promise<boolean> {
        if (isNaN(num)) {
            throw new Error('Wrong number received');
        }
        return num % 2 === 1;
    }
   
}

On the client (example for Angular):

    check(1);// => "returned true"
    check(2);// => "returned false"
    check('asdf');// => "caught error 'Wrong number received'"
    
    private check(num): void {
        emit<boolean>('checkIsNumberOdd', num)
            .subscribe(
                (result: boolean) => { console.log(`returned ${result}`); },
                (error) => { console.log(`caught error '${error}'`); }
            );
    }

    private emit<T>(chanel: string, message?: any): Observable<T> {
        return new Observable<T>(observer => {
            this.socket.emit(chanel, message, (data: any): void => {
                if ( data.success ) {
                    observer.next(data.data as T);
                } else {
                    observer.error(data.data);
                }
                observer.complete();
            });
        });
    }