NestJS Redis Pub/Sub과 socketIO로 채팅 앱 만들기 -1
안녕하세요. 이번에는 NestJS와 Redis의 Pub/Sub기능을 이용하여 채팅 채널을 만들도록 하겠습니다. 채팅 채널을 테스트히기 위한 툴로는 Postman을 사용할 것이며 자세한 내용은 아래 링크를 참고해 주시기 바랍니다.
그리고 이전글을 참고하실려면 아래 링크를 확인해 주시기 바랍니다.
링크 : NestJS Redis Pub/Sub과 socketIO로 채팅 앱 백엔드 만들기 -0
일단 현재 블로그에서 작성하는 Node버전은 16.17.0이며 NestJS버전은 9.1.2입니다.
프로젝트를 생성(위 블로그에서는 nestjs-microservice-example)하고 필요한 npm모듈을 설치합니다.
socketIO모듈을 설치할때는 아래 링크를 참고해 주시기 바랍니다.
링크 : NestJS SocketIO - 방을 선택해서 들어가는 채팅방 만들기
위 사항이 마무리 되면 microservice 모듈을 설치합니다.
- @nestjs/microservices npm 설치
$ npm i --save @nestjs/microservices
- redis바탕으로 microservices를 구상할때 설치
$ npm i --save ioredis
먼저 최상단 루트에 .development.env파일을 만들어주고 아래와 같이 작성합니다.
NESTJS_PORT=4500
REDIS_PORT=6379
REDIS_HOST="localhost"
NestJS_PORT가 4500이지만 추가로 실행할 서버는 포트번호를 다르가 하면서 추가하시면 됩니다.
![]() |
사진1) 백엔드 구성 |
사진1은 개발할려는 기본적인 백엔드 구조 입니다. 모듈안에는 컨트롤러와 웹소켓 서버(socketio.gateway)가 있는데 기본적으로 웹소켓이 채팅앱입니다.
다만 Redis에서 데이터를 Subscribe는 socket_publish에서 받고나서 socketio.gateway에 보내주고 이를 SocketIO쪽으로 BroadCasting해줍니다. 만약 SocketIO에서 데이터를 입력하면 socketio.gateway에서 Redis로 Publish합니다.
gitHubLink : https://github.com/Alex-Choi0/nestjs-microservice-useredis-pub-sub-example.git
코드에 대한 자세한 사항은 gitHubLink를 참고해 주시기 바랍니다. 주석도 자세하게 적어놨으니 이해하는데는 어렵지 않을 것입니다. 만약 질문이 있다면 댓글을 달아주시기 바랍니다.
![]() |
사진2) 다른 포트의 서버2개와 redis서버 실행 |
사진2에서 각각 4500,4600포트로 동일한 채팅앱 서버를 만들었습니다. 그리고 이 서버를 실행하기 전에 redis서버가 실행되야 합니다. 저는 local 서버로 돌리기 때문에 NestJS서버2개와 redis서버가 동일한 PC에서 구동되고 있습니다.
![]() |
사진3) Postman SocketIO접속 |
사진3에서 2개의 SocketIO접속을 하였습니다. 각각 4500, 4600번으로 접속했기 때문에 redis의 pub/sub기능을 사용하지 않았다면 서로 통신을 할수 없습니다.
사진4) MicroService SocketIO Test
위 영상은 해당 NestJS코드 및 Postman을 이용하여 테스트를 했습니다. 참고 하시기 바랍니다.
댓글
댓글 쓰기