troubleshooting issue: One or more namespaces failed to connect

박두팔이·2024년 3월 8일
0

Node.JS

목록 보기
9/20

error code

socketio.exceptions.ConnectionError: One or more namespaces failed to connect

문제 발생 상황

클라이언트의 소켓과 서버 소켓을 연결하는 과정 중 위와 같은 에러가 나왔다.


문제 발생 이유

socketio 클라이언트가 서버에 연결을 시도할 때 네임스페이스가 연결에 실패했기 때문에 발생했다.


문제해결을 위한 과정

시도(1): 방화벽 문제로 3000포트에 접속하지 못해서 발생한 원인일거라고 예상하고 local에서 인 바운드 규칙 / 아웃바운드 규칙을 확인 후 3000port의 문제없음을 확인 → 실패

시도(2): 클라이언트와 서버의 socketio 버전 호환성 문제를 검토하고 수정하였음 → 실패

시도(3): socket.io의 connection이벤트 발생하지 않음. 문제가 되는 middleware(5) 코드 전체 주석 → socketio연결 성공


☑️ 문제해결

middleware(5) 코드를 재 검토

  1. 변경 된 변수명이 반영되지 않은 문제 → 휴먼 에러

  2. if문 내부에서 next(); 코드 작성 x

    a. next(); 코드를 작성하지 않은 문제가 왜 One or more namespaces failed to connect 에러를 야기하는가?

    • socket.io 미들웨어를 사용할 때, 미들웨어 함수는 반드시 next(); 를 호출해야 다음 미들웨어로 제어를 넘기거나 에러가 없는 경우 소켓 연결을 계속 진행시킬 수 있다.
    • 만일 next(); 가 호출되지 않으면, 연결 설정 과정이 중단되어 클라이언트와 서버 간의 연결이 완료되지 않는다.
    • 즉, 미들웨어에서 next(); 호출을 누락하면 socket.io가 클라이언트의 연결을 완료하지 못하고 결과적으로 네임스페이스 연결 실패와 같은 에러가 발생하게 되는 것이다.

✨ 사후 분석 및 예방적 조치

1. 변수 rename시, 일괄 적용 처리 방안
a. 변경할 단어 선택
b. Ctrl + Shift + L
c. 단어 일괄 수정
2. socketio에 대한 이해
3. consol로 log를 찍는 방법 외에는 에러발생을 잡을 방법이 없는지 고민해보기

profile
기억을 위한 기록 :>

0개의 댓글