본문 바로가기
IT

socket.io 프로토콜 - 메시지 유형 및 내용

by 병헤는 밤 2024. 1. 18.
반응형

socket.io 로 구현된 소스 분석중에 크롬 브라우저 디버깅툴에서 다음과 같이 메시지가 찍히는 것을 확인 하였다.

 

아래 화살표 (↓) 는 받은 메시지 위 화살표(↑)는 보낸 메시지 일테고, json 형태의 값들은 주고 받은 데이터 일텐데, 그 사이의 0, 40, 42 같은 숫자들은 무엇을 의미하는지 궁금하여 Chat GPT에게 질문을 해 보았다.

 

프론트는 react로 되어 있고, 백엔드는 springboot로 되어 있으며 socket.io 이용해서 웹소켓 통신을 한다 등등의 질문과 대답이 오고간 상태에서...

 

[질문]

40, 42 같은 숫자에서 앞자리와 뒷자리의 정확한 의미를 알려주고, 어떤 값들이 들어갈수 있는지와 그 숫자들이 무엇을 의미하는지 알려줘

 

[답변]

socket.io 는 메시지를 전송할 때 특정한 프로토콜 형식을 사용합니다. 이 형식에서 사용되는 숫자들은 메시지의 유형과 내용을 나타내는 데 사용됩니다. 이 숫자들은 보통 두 자리로 구성되며, 각 자리는 다음과 같은 의미를 가집니다:

  1. 첫 번째 숫자 (메시지 타입): 이 숫자는 메시지의 종류를 나타냅니다. 여기에는 다음과 같은 값들이 있습니다:
    • 0: 연결
    • 1: 연결 해제
    • 2: 핑
    • 3: 퐁
    • 4: 메시지 (이벤트 메시지 및 데이터 전송)
  2. 두 번째 숫자 (메시지 하위 타입): 이 숫자는 4 (메시지) 타입의 메시지에 대한 추가적인 정보를 제공합니다.
    • 0: 연결 메시지
    • 1: 연결 해제 메시지
    • 2: 이벤트 메시지
    • 3: 에러 메시지
    • 4: 이진 이벤트 메시지
    • 5: 이진 에러 메시지

예시

  • 40: 이는 연결 메시지를 나타냅니다 (4 - 메시지, 0 - 연결 메시지).
  • 42: 이는 이벤트 메시지를 나타냅니다 (4 - 메시지, 2 - 이벤트 메시지). 이벤트 메시지 뒤에는 JSON 형식의 데이터가 올 수 있으며, 이 데이터는 이벤트의 이름과 매개변수를 포함합니다.

메시지 예시

  • 42["event_name", {"some": "data"}]: 이벤트 메시지로, event_name 이벤트를 발생시키고 {"some": "data"} 객체를 데이터로 전송합니다.
  • 40: 연결 초기화 메시지입니다.
  • 3: 퐁 메시지입니다.

이러한 메시지 형식은 socket.io 내부에서의 통신을 위한 것으로, 개발자가 직접 이러한 메시지를 처리할 필요는 일반적으로 없습니다. socket.io 라이브러리가 이러한 메시지를 자동으로 처리하고, 애플리케이션 코드에서는 더 고수준의 이벤트를 처리하는 데 집중할 수 있습니다.

반응형

댓글