Book Image

Nest.js: A Progressive Node.js Framework

By : Greg Magolan, Patrick Housley, Adrien de Peretti, Jay Bell, David Guijarro
Book Image

Nest.js: A Progressive Node.js Framework

By: Greg Magolan, Patrick Housley, Adrien de Peretti, Jay Bell, David Guijarro

Overview of this book

Nest.js is a modern web framework built on a Node.js Express server. With the knowledge of how to use this framework, you can give your applications an organized codebase and a well-defined structure. The book begins by showing how to use Nest.js controllers, providers, modules, bootstrapping, and middleware in your applications. You’ll learn to use the authentication feature of Node.js to manage the restriction access in your application, and how to leverage the Dependency Injection pattern to speed up your application development. As you advance through the book, you'll also see how Nest.js uses TypeORM—an Object Relational Mapping (ORM) that works with several relational databases. You’ll use Nest.js microservices to extract part of your application’s business logic and execute it within a separate Nest.js context. Toward the end of the book, you’ll learn to write tests (both unit tests as well as end-to-end ones) and how to check the percentage of the code your tests cover. By the end of this book, you’ll have all the knowledge you need to build your own Nest.js applications.
Table of Contents (16 chapters)

WebSocketGateway

To implement your first module using the Nest.js web socket, you will have to use the @WebSocketGateway decorator. This decorator can take an argument as an object to provide a way to configure how to use the adapter.

The implementation of the arguments respect the interface GatewayMetadata, allowing you to provide:

  • port, which must be use by the adapter
  • namespace, which belongs to the handlers
  • middlewares that have to be applied on the gateway before accessing the handlers

All the parameters are optional.

To use it, you have to create you first gateway class, so imagine a UserGateway:

@WebSocketGateway({
    middlewares: [AuthenticationGatewayMiddleware]
})  
export class UserGateway { /*....*/ }

By default, without any parameters, the socket will use the same port as your express server (generally 3000). As you can see, in the previous example we used a @WebSocketGateway, which uses the default port 3000 without namespace and with one middleware that we will see...