Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TypeScript
- mongoose
- game
- react
- Bull
- class
- nestjs
- 게임
- OCR
- GIT
- AWS
- Queue
- Python
- flask
- Express
- MongoDB
- 정렬
- dfs
- Nest.js
- Dinosaur
- cookie
- 자료구조
- MySQL
- nodejs
- typeORM
- 공룡게임
- JavaScript
- Sequelize
- jest
Archives
- Today
- Total
포시코딩
[Nest.js] Gateway와 socket.io 본문
728x90
노션에 정리한거 임시 복붙
- Nest.js의 Gateway & socket.io
- 웹소켓 - 실시간 채팅(1) (Socket.io, React, NestJS) 위 블로그를 참고해 구현
- 공식사이트와 같이 참고하면 좋다.
- Nest.js에서 Nest 명령어를 통해 생성할 수 있는 Gateway는 단순히 @WebSocketGateway 데코레이터가 달린 클래스이다.
- socket.io와 ws 중 선택해 구축할 수 있다.
- 연결 방법
- Front-End (React)
- const socket = io(`${process.env.REACT_APP_SERVER_ADDRESS}/chat`);
- Back-End (Nest.js)
- @WebSocketGateway({ namespace: 'chat', cors: true })
- socket.broadcast vs. this.nsp
- socket.broadcast: 나 빼고 전체 → 내가 친 채팅을 모두에게 보낼 경우
- this.nsp: 나 포함 전체 → 접속 유저 수 같은 어떠한 값을 모두에게 동기화 시켜야 할 경우
- socket.broadcast .to(chatObj.roomId) .emit('message', chatObj); this.nsp .to(chatObj.roomId) .emit('alert', alertObj, this.countNumberOfRoom(chatObj.roomId));
- socket.io에는 네임스페이스(namespace)와 어댑터(adapter)라는 개념이 있다.
- 네임스페이스
- 네임스페이스는 클라이언트들 간의 통신을 그룹화하는 역할을 한다.
- 특정한 기능이나 역할을 가진 클라이언트들끼리 묶어서 채팅방, 게임방, 실시간 데이터 전송 등의 기능을 구현할 수 있다.
- 우리 프로젝트에선 /chat 에 대한 네임스페이스 객체를 생성해 사용했다.
- 어댑터
- 네임스페이스
- 이벤트를 감지하는 두 가지 adapter.on()과 @SubscribeMessage() 데코레이터의 차이
- adapter.on()
- Socket.IO의 네임스페이스(namespace) 어댑터를 사용하여 서버에서 이벤트를 감지한다.
- 이 메서드를 사용하면 socket.io 서버에서 생성된 이벤트를 감지하고 이에 대한 콜백 함수를 실행할 수 있다.
- 우리 프로젝트에선 delete-room 채팅방이 사라지는 경우에 대한 이벤트를 감지해 실행되게끔 활용했다.
- @SubscribeMessage()
- @SubscribeMessage() 데코레이터는 클라이언트로부터 받은 메시지를 감지하는 역할이다.
- adapter.on()
- 정리
728x90
'Node.js' 카테고리의 다른 글
[Nest.js] passport, jwt를 통한 로그인 구현(1) - passport-local (0) | 2023.04.06 |
---|---|
4월3일 - Nest.js의 Class와 Factory (0) | 2023.04.04 |
[Nest.js] 모임 참여 - 동시성 문제 해결 과정 정리 with. Bull & Event-Emitter (0) | 2023.04.02 |
[Nest.js] CI/CD (0) | 2023.03.28 |
[Nest.js, React] socket.io를 통한 실시간 채팅 구현 (포스팅 추천) (0) | 2023.03.22 |