10,000명의 동시접속자에게 1.5초 (1,500ms) 내로 메시지가 전달되는 채팅 서버 구축
Websocket
을 그대로 적용할 수 있다. (application)Redis
를 적용하여 채널을 관리할 수 있다.Message Queueing Telemetry Transport
Packet Size | HTTP 1.1 | MQTT |
---|---|---|
Minimum | 26 bytes | 2 bytes |
Maximum | 1 ~ 4GB | 256 MB |
🔺 HTTP의 경우 WebBrowser 별로 패킷 사이즈 제한이 상이하다.
사물인터넷(IoT) 즉 기기간의 (드론이라던가, 리모컨이라던가..) 통신을 위해 고안된 프로토콜이기 때문에 더 가볍다. ➡️ (더 빨라지기 쉽다)
내가 눈독 들인 이유인데, 아프리카 방송이든 게임이든 각 방, 채널을 나눈다.
publish 한다는 것은 발행한다는 거고
subscribe 는 구독 (이정도 영어는 다 아는데..?)
내가 구독한 '토픽(채널, 방, 주제)'에 만 메시지를 주고받을 수 있게 분리한다.
별거 아니라고 생각할 수도 있는데
채팅이나 게임서버에서 누군가 '종료 (나감)'을 정확하게 표시하는 것이 중요할 수 있다.
롤에서 우리팀 한명이 강제종료로 탈주했는데 '나감'처리가 안된다고 생각해봐라. (어머 어디?)
비정상 종료시 등록해두었던 토픽에 종료 사실을 전파한다.
Level | Description |
---|---|
0 | 한번 보내고 잊어버림 (뒤의 결과는 신경쓰지 않음) |
1 | ACK 확인 응답 메시지 수신까지 송신 재시도 (중복 송신 가능) |
2 | 정확히 '한 번' 메시지가 전달되도록 HandShake 포함 |