inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

socket.io와 gateway에 대한 질문입니다!

937

몽이

작성한 질문수 1

0

Nest.JS document를 읽어보면 클라이언트에서 보내준 메세지를 @subscribeMessage()에서 받아와서 gateway에 주입된 service를 이용해 로직을 수행하는 걸로 이해했는데 

강의에서는 client -> controller -> service에서 gateway 의존성 주입 후 client로 emit 하는 순서로 진행이 되는데 client에서 바로 gateway로 진입하지 않은 이유를 알고 싶습니다.

nodejs express NestJS TypeORM

답변 1

0

제로초(조현영)

질문이 이해가 안 됩니다. client에서 바로 gateway로 진입한다는 것이 뭔가요?

client로 emit하는 것은 서버->브라우저이고

client에서 gateway로 진입하는 것은 브라우저->서버인 것 같은데

이 둘이 무슨 관련이 있나요?

0

몽이

강의의 events.gateway는 로그인 말고 @subscribeMessage()를 쓰는 경우가 없는걸로 알고 있는데 그 이유가 궁금합니다. 

 

@SubscribeMessage('newChat')

제가 이해한 socket 통신의 방법은 subscribeMessage를 통해 gateway에서 service의 로직을 불러와 실행하는거라고 알고 있는데

 

@Post(':url/channels/:name/chats')

이렇게 controller로 API를 호출하여 채팅을 보내는 방법으로 쓰고 계셔서 이 부분이 또 다른 방법인건지 그렇다면 이렇게 쓰는 이유가 무엇인지 알고 싶습니다!

질문이 어려우셨다면 죄송합니다ㅠㅠ

0

제로초(조현영)

아, 저는 모든 걸 웹소켓으로 하는 걸 그리 선호하지 않아서 그렇습니다.

요청은 컨트롤러로 보내고, 컨트롤러에서 실시간 데이터를 필요로하는 곳에 gateway로 뿌리는 걸 선호합니다.

말씀하신대로 SubscribeMessage로 newChat 이벤트를 만들어서 거기서 DB 저장도 하고 emit도 하셔도 문제는 없습니다. 다만 로깅 서비스에 제대로 로깅되는지는 모르겠네요.

0

몽이

혹시 선호하지 않는 이유가 따로 있나요?
두 가지 방법이 차이가 있다는 건 알지만 정확하게 어떤 장단점이 있는지는 잘 모르겠습니다.

0

제로초(조현영)

로깅 서비스를 쓸 때 웹소켓이면 로깅이 애매해집니다. 컨트롤러면 주소라는 명확한 단위가 있는데말이죠.

다만 커넥션을 한 번 더 만들어야 해서 성능적으로는 웹소켓이 더 낫습니다.

0

몽이

아하,  답변 감사합니다! 궁금했던게 풀렸네요

강의자료는 어디서 다운받나요?

0

146

4

질문 있습니다.

0

320

3

코드 편집기 확장 프로그램

0

220

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

165

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

179

3

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

0

163

2

로그인방법이 고민됩니다.

0

197

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

305

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

249

2

npm run db:create 시에 발생하는 decorating 오류

0

245

2

RxJS 디버깅 질문 있습니다.

0

201

3

CacheManager에 대해 질문 있습니다.

0

185

2

로깅은 어떻게 하는게 효율적일까요?

0

240

1

CORS 질문 있습니다.

0

428

2

쿠키 옵션에 대해서 질문 있습니다.

0

190

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

458

1

401 unauthorized문제

0

306

1

가드의 장점에 대해서 질문이 있습니다.

0

234

1

로그 관리에 대해 질문 있습니다.

0

256

2

CORS 에러 질문 있습니다.

0

329

2

배포 환경 DB 연결 질문 있습니다.

0

418

2

socket io 미 연결 문제 (nest & flutter)

1

1170

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

466

1

start:dev-backup으로 돌리면 핫 리로딩이 되요 정상인가요?

0

327

1