Как работать с WebSocket в Nest.js

WebSocket в Nest.js

WebSocket — это протокол связи, который позволяет взаимодействовать между клиентом и сервером в режиме реального времени. Nest.js, популярный фреймворк для разработки серверных приложений на языке TypeScript, предоставляет удобные инструменты для работы с WebSocket.

Установка и настройка

Для начала установите Nest.js, если у вас еще нет его на компьютере:

  1. Установите Node.js, если у вас его еще нет.
  2. Установите Nest.js командой:
$ npm i -g @nestjs/cli

После установки Nest.js создайте новый проект:

$ nest new websocket-example

Затем перейдите в директорию проекта:

$ cd websocket-example

Теперь установим необходимые зависимости:

$ npm i --save @nestjs/websockets ws

Установим WebSocket пакет и его зависимости.

Пример

Создайте новый WebSocket модуль:

import { Module } from '@nestjs/common';
import { WebSocketGateway } from '@nestjs/websockets';
import { WebSocketServer } from '@nestjs/websockets';
@Module({
providers: []
})
@WebSocketGateway()
export class AppGateway {
@WebSocketServer() server;
}

В этом примере мы создаем новый модуль с именем AppGateway и используем декоратор @WebSocketGateway, чтобы указать, что этот модуль будет обрабатывать WebSocket соединения.

Затем используем декоратор @WebSocketServer, чтобы получить доступ к серверу WebSocket.

Теперь создайте новый WebSocket контроллер:

import { WebSocketGateway, WebSocketServer, SubscribeMessage } from '@nestjs/websockets';
@WebSocketGateway()
export class AppGateway {
@WebSocketServer() server;
@SubscribeMessage('message')
handleMessage(client, payload) {
this.server.emit('message', payload);
}
}

В этом примере мы определяем метод handleMessage, который будет вызван при получении сообщения с именем ‘message’. Мы используем метод emit сервера, чтобы отправить полученное сообщение всем подключенным клиентам.

Запуск приложения

Чтобы запустить ваше WebSocket приложение, выполните следующую команду:

$ npm run start

Ваше приложение будет доступно по адресу http://localhost:3000.

Теперь у вас есть базовое руководство по работе с WebSocket в Nest.js! Используйте его в своих проектах для обработки реального времени и обмена данными между клиентом и сервером.

Примеры использования WebSocket в Nest.js и пошаговое руководство по настройке

Nest.js — это фреймворк для создания масштабируемых и эффективных серверных приложений на Node.js. Он основан на принципах модулярности и внедрения зависимостей, что позволяет легко разрабатывать и тестировать приложения.

В этом разделе мы рассмотрим примеры использования WebSocket в Nest.js и пошаговое руководство по настройке.

Шаг 1: Установка и настройка Nest.js

Для начала работы с WebSocket в Nest.js, вам нужно установить Nest.js с помощью npm или yarn. Затем создайте новый проект Nest.js с использованием команды:

npm i -g @nestjs/cli
nest new my-project

После создания проекта войдите в папку проекта:

cd my-project

Шаг 2: Установка пакета socket.io

Для работы с WebSocket в Nest.js мы будем использовать пакет socket.io. Установите его с помощью команды:

npm install --save @nestjs/platform-socket.io socket.io

Шаг 3: Создание WebSocket модуля

Далее создайте новый модуль WebSocket с использованием команды:

nest generate module websocket

Эта команда создаст новый модуль с именем «websocket» в папке «src».

Шаг 4: Создание WebSocket контроллера

Теперь создайте новый контроллер WebSocket внутри созданного модуля с использованием команды:

nest generate controller websocket --no-spec

Эта команда создаст новый контроллер с именем «websocket» в папке «src/websocket».

Шаг 5: Настройка WebSocket гейта

Откройте созданный контроллер и добавьте следующий код:

import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'socket.io';
@WebSocketGateway()
export class WebsocketGateway {
@WebSocketServer()
server: Server;
}

Этот код создает WebSocket гейт с использованием декоратора @WebSocketGateway и экземпляром WebSocket сервера.

Шаг 6: Создание WebSocket обработчика

Теперь создайте новый файл с именем «websocket.handler.ts» в папке «src/websocket» и добавьте следующий код:

import { SubscribeMessage, WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
@WebSocketGateway()
export class WebsocketGateway {
@WebSocketServer()
server: Server;
@SubscribeMessage('message')
handleMessage(client: Socket, payload: any): void {
this.server.emit('message', payload);
}
}

Этот код добавляет метод «handleMessage» с декоратором @SubscribeMessage, который будет вызываться при получении сообщения с типом «message».

Шаг 7: Подключение WebSocket гейта к модулю

Откройте созданный модуль и добавьте следующий код:

import { Module } from '@nestjs/common';
import { WebsocketGateway } from './websocket.gateway';
@Module({
providers: [WebsocketGateway],
})
export class WebsocketModule {}

Этот код подключает WebSocket гейт к модулю с использованием декоратора @Module.

Шаг 8: Использование WebSocket в контроллере

Теперь вы можете использовать WebSocket в любом контроллере Nest.js, добавив его в конструктор и вызвав методы гейта. Например:

import { Controller, Get, Inject } from '@nestjs/common';
import { ClientProxy, MessagePattern } from '@nestjs/microservices';
@Controller('example')
export class ExampleController {
constructor(
@Inject('WEBSOCKET_SERVICE') private readonly websocketService: ClientProxy,
) {}
@Get()
async getExample(): Promise<string> {
return 'WebSocket Example';
}
@MessagePattern('message')
handleMessage(payload: any): void {
this.websocketService.emit('message', payload);
}
}

Этот код добавляет WebSocket сервис в конструктор контроллера и вызывает методы гейта в соответствующих декораторах.

Шаг 9: Запуск WebSocket сервера

Теперь вы можете запустить WebSocket сервер, добавив следующий код в файл «src/main.ts»:

import { NestFactory } from '@nestjs/core';
import { WebsocketModule } from './websocket/websocket.module';
async function bootstrap() {
const app = await NestFactory.create(WebsocketModule);
await app.listen(3000);
}
bootstrap();

Этот код создает экземпляр модуля WebSocket и запускает сервер на порту 3000.

Теперь вы можете использовать WebSocket в вашем Nest.js приложении!

В этом руководстве мы рассмотрели примеры использования WebSocket в Nest.js и пошаговое руководство по его настройке. Теперь у вас есть основа для создания реального времени в приложениях Nest.js с использованием WebSocket.

Оцените статью