[typescript] 타입스크립트로 Nest.js 웹 소켓 사용하기

Nest.js는 Node.js 프레임워크로, 타입스크립트와 함께 사용될 때 특히 강력한 기능을 발휘합니다. 이번에는 Nest.js 프레임워크와 타입스크립트를 사용하여 웹 소켓을 구현하는 방법에 대해 알아보겠습니다.

1. Nest.js 프로젝트 생성

먼저, Nest.js 프로젝트를 생성합니다. 이를 위해 명령줄에서 다음과 같이 입력합니다.

$ npm install -g @nestjs/cli
$ nest new websocket-app

위 명령을 통해 websocket-app이라는 새로운 Nest.js 프로젝트가 생성됩니다.

2. 웹 소켓 모듈 설치

Nest.js에서 웹 소켓을 사용하기 위해서는 @nestjs/websockets 패키지를 설치해야 합니다.

$ npm install @nestjs/websockets ws

3. 웹 소켓 모듈 설정

웹 소켓 모듈을 설정하기 위해 WebSocketGateway 데코레이터를 사용합니다.

import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'ws';

@WebSocketGateway()
export class AppGateway {
  @WebSocketServer() server: Server;
}

위 코드는 AppGateway라는 웹 소켓 게이트웨이를 생성하고, WebSocket 서버의 인스턴스를 가져오는 예시입니다.

4. 이벤트 핸들링

이제 웹 소켓 서버에서 발생하는 이벤트를 처리할 수 있습니다. 예를 들어, 새로운 클라이언트가 연결될 때 이를 감지하고 처리하는 방법은 아래와 같습니다.

import { OnGatewayConnection, WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'ws';

@WebSocketGateway()
export class AppGateway implements OnGatewayConnection {
  @WebSocketServer() server: Server;

  handleConnection(client: WebSocket, ...args: any[]) {
    console.log('New client connected');
  }
}

위 코드에서 OnGatewayConnection을 구현하는 방식으로 새로운 클라이언트 연결 이벤트를 핸들링할 수 있습니다.

이제 Nest.js와 타입스크립트로 간단한 웹 소켓 서버를 만드는 방법에 대해 알아봤습니다. Nest.js의 강력한 모듈 구조와 타입스크립트의 강력한 타입 시스템을 통해 안정적이고 확장 가능한 웹 소켓 서버를 구현할 수 있습니다.

더 많은 내용을 학습하고 싶다면, Nest.js 공식 문서를 참고하세요.