Socket.IO 는 WebSocket 이 아니야
Socket.IO 에서 가장 중요한 사실이야. Socket.IO 는 WebSocket 위에 올라가는 사용자 지정 프로토콜 이고 HTTP long polling 을 대체 전송 방식으로 사용해. 브라우저 기본 WebSocket 클라이언트는 Socket.IO 서버와 통신할 수 없고, 일반 WebSocket 서버도 Socket.IO 클라이언트를 받을 수 없어. ‘방’과 ‘이벤트’ 같은 말을 공유하지만 서로 통신하려면 Socket.IO SDK 가 필요해.
Socket.IO 가 더해 주는 기능
자동 재연결, 방과 네임스페이스를 통한 다중 채널, 콜백 방식 요청·응답인 ACK, WebSocket 에서 HTTP long polling 으로 자동 전환하는 대체 수단, Redis 와 Postgres 를 위한 확장 어댑터를 제공해. 채팅, 공동 작업, 알림 모양의 앱이라면 기본 WebSocket 보다 빠르게 완성할 수 있어.
대가: 특정 생태계에 묶여
Socket.IO 를 고르면 웹, 모바일, 서버 간 통신을 포함한 모든 클라이언트가 Socket.IO 라이브러리를 써야 해. 클라이언트를 모두 직접 관리한다면 괜찮아. 하지만 게임 스튜디오, 파트너, IoT 기기 같은 제3자가 임의의 도구로 연결해야 한다면 문제가 돼.