WebSocket은 클라이언트와 서버 간에 지속적인 양방향 통신을 가능하게 하는 프로토콜
HTTP와 달리 연결이 한 번 수립되면 지속적으로 유지되어 실시간 데이터 교환이 가능
Socket.IO는 WebSocket을 기반으로 한 JavaScript 라이브러리로, 실시간 양방향 통신을 더 쉽고 안정적으로 구현할 수 있도록 도와준다
기술적 성격
WebSocket: 브라우저 내장 표준 프로토콜
Socket.IO: 외부 라이브러리 (설치 필요)
브라우저 호환성 처리
// WebSocket - 직접 호환성 체크 필요
if (typeof WebSocket !== 'undefined') {
const ws = new WebSocket('ws://localhost:3000');
} else {
// 대안 방법 직접 구현해야 함
}
// Socket.IO - 자동 처리
const socket = io('http://localhost:3000'); // 알아서 최적 방법 선택
연결 실패 시 대응
WebSocket: 연결 끊어지면 수동으로 재연결 코드 작성
Socket.IO: 자동 재연결 기능 내장
구현 복잡성
// WebSocket - 모든 것을 직접 구현
const ws = new WebSocket('ws://localhost:3000');
ws.onopen = function() { /* 연결 처리 */ };
ws.onmessage = function(event) { /* 메시지 처리 */ };
ws.onerror = function() { /* 에러 처리 */ };
ws.onclose = function() { /* 재연결 로직 직접 구현 */ };
// Socket.IO - 간단한 API
const socket = io('http://localhost:3000');
socket.on('connect', () => { /* 연결 처리 */ });
socket.on('message', (data) => { /* 메시지 처리 */ });
// 에러, 재연결 등은 자동 처리
성능과 용량
WebSocket: 가볍고 빠름
Socket.IO: 기능이 많아 상대적으로 무거움