반응형
socket.io 로 구현된 소스 분석중에 크롬 브라우저 디버깅툴에서 다음과 같이 메시지가 찍히는 것을 확인 하였다.
아래 화살표 (↓) 는 받은 메시지 위 화살표(↑)는 보낸 메시지 일테고, json 형태의 값들은 주고 받은 데이터 일텐데, 그 사이의 0, 40, 42 같은 숫자들은 무엇을 의미하는지 궁금하여 Chat GPT에게 질문을 해 보았다.
프론트는 react로 되어 있고, 백엔드는 springboot로 되어 있으며 socket.io 이용해서 웹소켓 통신을 한다 등등의 질문과 대답이 오고간 상태에서...
[질문]
40, 42 같은 숫자에서 앞자리와 뒷자리의 정확한 의미를 알려주고, 어떤 값들이 들어갈수 있는지와 그 숫자들이 무엇을 의미하는지 알려줘
[답변]
socket.io 는 메시지를 전송할 때 특정한 프로토콜 형식을 사용합니다. 이 형식에서 사용되는 숫자들은 메시지의 유형과 내용을 나타내는 데 사용됩니다. 이 숫자들은 보통 두 자리로 구성되며, 각 자리는 다음과 같은 의미를 가집니다:
- 첫 번째 숫자 (메시지 타입): 이 숫자는 메시지의 종류를 나타냅니다. 여기에는 다음과 같은 값들이 있습니다:
- 0: 연결
- 1: 연결 해제
- 2: 핑
- 3: 퐁
- 4: 메시지 (이벤트 메시지 및 데이터 전송)
- 두 번째 숫자 (메시지 하위 타입): 이 숫자는 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 라이브러리가 이러한 메시지를 자동으로 처리하고, 애플리케이션 코드에서는 더 고수준의 이벤트를 처리하는 데 집중할 수 있습니다.
반응형
'IT' 카테고리의 다른 글
로그파일에서 일시를 UTC->KST 로 변환 하여 표시 하는 방법. (0) | 2024.09.24 |
---|---|
Intellij를 터미널 창에서 실행하기 (맥OS) (0) | 2024.03.20 |
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (0) | 2023.10.15 |
맥용 네이트온 사용자 이모티콘 저장 위치 (0) | 2023.05.10 |
vue.js not detected 오류 해결 방법 (0) | 2023.05.02 |
댓글