Skip to content

Latest commit

 

History

History
70 lines (61 loc) · 1.42 KB

README.md

File metadata and controls

70 lines (61 loc) · 1.42 KB

WsRoutableAdapter for NestJS

Extended version of NestJs' WsAdapter that supports route parameters, similar to those of HTTP controllers.

Usage

gateway.ts

// Regular gateway definition
@WebSocketGateway({ path: '/' })
export class TestGateway {
  // Route-aware analog of @SubscribeMessage(...)
  @WsRouteSubscribe('ping/:param')
  onPing(
    @MessageBody() data,
    // New decorator to get the full route
    @WsRoute() route,
    // Route-aware analog of @Param(...)
    @WsRouteParam('param') param,
    @WsRouteParam('missingParam') missingParam,
  ) {
    return {
      event: 'pong',
      data: {
        data,
        route,
        param
      },
    };
  }
}

main.ts

async function bootstrap(): Promise<void> {
  // ...
  const app = await NestFactory.create(AppModule);
  app.useWebSocketAdapter(new WsRoutableAdapter(app));
  // ...
}

Now if you send

{ 
  "event": "ping/42", 
  "data": "data"
}

gateway will responde with

{
  "event": "pong",
  "data": {
    "data": "data",
    "route": "ping/42",
    "param": "42"
  }
}

Versioning

Since this library extends the build-in WsAdapter from the @nestjs/platform-ws package, versioning of this library will follow versioning of NestJs (patch versions might differ).