WebSocket·MQTT·Socket.IO 비교
세 기술은 같은 계층의 대체품이 아닙니다. WebSocket은 양방향 연결을, MQTT는 발행·구독 메시징 프로토콜을, Socket.IO는 자체 프로토콜과 이벤트·룸 등의 기능을 제공합니다.
| 기술 | 주된 역할 | 서버에서 구성할 것 |
|---|---|---|
| WebSocket | 클라이언트–서버 양방향 메시지 전송 | 사용자 인증, 메시지 라우팅, 재연결·상태 관리 |
| MQTT | 브로커 기반 발행·구독, 계층형 토픽 | 브로커의 인증·권한·TLS·QoS 정책 |
| Socket.IO | 이벤트 기반 통신, 룸·재연결 등 | 앱의 룸 구성과 메시지 처리·권한 |
| IOSignal | 채널·CID·홈채널 기반 메시지 중계 | 서버 주소·인증·quota·응용 규약 |
MQTT 클라이언트가 IOSignal 서버에 그대로 연결되는 것은 아닙니다. Socket.IO도 일반 WebSocket 클라이언트와 직접 호환되는 프로토콜이 아닙니다. IOSignal의 태그 규칙은 MQTT 토픽 트리와 다릅니다.
브라우저와 기기 연결
MQTT도 WebSocket을 통해 브라우저에서 사용할 수 있습니다. 예를 들어 Mosquitto는 WebSocket 리스너를 구성할 수 있습니다. IOSignal은 브라우저에 WebSocket, Arduino에 CongSocket(TCP)을 사용하고 서버가 두 연결 사이에서 메시지를 중계합니다.
인증과 암호화
WebSocket은 TLS(wss://)와 HTTP 기반 인증을 사용할 수 있습니다(RFC 6455 보안 고려사항). MQTT 브로커도 인증·접근 제어·TLS를 구성할 수 있습니다(Mosquitto 설정).
TLS의 자원 사용량은 보드·구현·설정에 따라 다릅니다. 모든 TLS가 인증서나 공개키 교환을 요구하는 것은 아니며 PSK 방식도 있습니다. 이미 공유 키를 설정할 수 있는 환경에서 IOSignal의 boho가 맡는 역할과 한계는 boho 설계와 기술 상세를 참고하세요. Socket.IO는 공식 문서를 참고하세요.