인프런 커뮤니티 질문&답변

TTAE TTAE님의 프로필 이미지
TTAE TTAE

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

네임스페이스의 이해와 Gateway 생명주기

안녕하세요 강의를 따라가던 중 한 번의 이벤트임에도 두 번이 발생합니다.

작성

·

416

1

event two times.png위에 이미지처럼 클라이언트에서 emit을 발생시켰을 때 서버에서 2번이 찍히고, username을 클라이언트로 전달해줄 때도, 클라이언트에서 2번이 찍힙니다. afterInit()함수 내부의 로거도 두번 작동하는데 왜 이럴까요?

답변 1

3

안녕하세요 :) 수강중인 사람중 한명입니다.

저도 동일한 현상을 발견해서 트러블 슈팅을 했는데 제가 해결한 방법을 공유 드리고자 댓글 남깁니다.

제가 발견한 원인과 해결 방법은 다음과 같습니다.

  • 원인: 여러 모듈의 providers 에 해당 게이트웨이 클래스를 선언.

  • 해결 방법: 해당 게이트웨이 클래스를 chats.models.ts 의 providers 에만 선언. 다른 providers에는 삭제.

     

    제가 참고한 블로그는 다음과 같습니다.

  • https://jay-ji.tistory.com/106

     

    결국 nestjs 가 지원하는 싱글톤 인스턴스의 범위때문에 발생한것으로 파악했습니다.

TTAE TTAE님의 프로필 이미지
TTAE TTAE
질문자

아 정말 감사합니다 nest generator를 통해 chatservice를 생성해서 자동으로 Appmodule에 주입이 되어있었습니다!

TTAE TTAE님의 프로필 이미지
TTAE TTAE

작성한 질문수

질문하기