Websocket API vs. Websocket

WebSocket이란?

WebSocket은 단일 TCP 연결을 통해 클라이언트와 서버 간의 양방향 통신 채널을 제공하는 통신 프로토콜이다. HTTP와 달리, 연결이 한 번 수립되면 계속 유지되며, 클라이언트와 서버가 서로 독립적으로 메시지를 주고받을 수 있다.

WebSocket 프로토콜은 RFC 6455에 정의되어 있으며, ‘ws://’ 또는 암호화된 연결을 위한 ‘wss://’ URI 스키마를 사용한다. WebSocket은 HTTP 핸드셰이크를 사용하여 연결을 시작한 다음, 프로토콜을 WebSocket으로 업그레이드한다.

WebSocket API란?

WebSocket API는 웹 애플리케이션에서 WebSocket 프로토콜을 사용할 수 있게 해주는 인터페이스이다. 이것은 W3C에서 표준화한 웹 API로, 자바스크립트를 통해 WebSocket 프로토콜을 구현할 수 있도록 한다.

WebSocket API는 WebSocket 객체를 통해 접근할 수 있으며, 웹 애플리케이션에서 WebSocket 연결을 생성하고 관리하는 데 필요한 메소드와 이벤트 핸들러를 제공한다.

주요 차이점 분석

  1. 개념적 차이

    • WebSocket: 통신 프로토콜 자체를 의미하며, 인터넷 상에서 메시지를 주고받는 방식을 정의한다.
    • WebSocket API: 개발자가 웹 애플리케이션에서 WebSocket 프로토콜을 사용할 수 있게 해주는 프로그래밍 인터페이스이다.
  2. 구현 레벨

    • WebSocket: 네트워크 레이어에서 동작하는 프로토콜이다.
    • WebSocket API: 애플리케이션 레이어에서 동작하는 인터페이스이다.
  3. 사용 방식

    • WebSocket: 직접 사용되지 않고, WebSocket API나 다른 구현체를 통해 간접적으로 사용된다.
    • WebSocket API: 자바스크립트 코드에서 직접 사용된다.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    // WebSocket API 사용 예시
    const socket = new WebSocket('ws://example.com/socket');
    
    // 연결이 열렸을 때 이벤트
    socket.onopen = function(event) {
        console.log('WebSocket 연결이 열렸습니다.');
        socket.send('Hello Server!'); // 서버에 메시지 전송
    };
    
    // 메시지를 받았을 때 이벤트
    socket.onmessage = function(event) {
        console.log('서버로부터 메시지 수신:', event.data);
    };
    
    // 오류가 발생했을 때 이벤트
    socket.onerror = function(error) {
        console.error('WebSocket 오류 발생:', error);
    };
    
    // 연결이 닫혔을 때 이벤트
    socket.onclose = function(event) {
        console.log('WebSocket 연결이 닫혔습니다. 코드:', event.code);
    };
    
  4. 표준화

    • WebSocket: IETF(Internet Engineering Task Force)에서 RFC 6455로 표준화되었다.
    • WebSocket API: W3C(World Wide Web Consortium)에서 표준화되었다.
  5. 확장성

    • WebSocket: 프로토콜 레벨에서 서브프로토콜과 확장을 지원한다.
    • WebSocket API: 기본 기능을 제공하며, 라이브러리를 통해 추가 기능을 구현할 수 있다.

WebSocket과 WebSocket API 비교

특성WebSocketWebSocket API
정의클라이언트-서버 간 양방향 통신을 위한 프로토콜WebSocket 프로토콜을 사용하기 위한 프로그래밍 인터페이스
레이어네트워크 레이어애플리케이션 레이어
표준화 기관IETF (RFC 6455)W3C
사용 방식간접적 (API나 라이브러리를 통해)직접적 (자바스크립트 코드에서)
구현 관점프로토콜 스펙자바스크립트 객체와 메소드
URI 스키마ws:// 또는 wss://해당 없음 (API에서 URI 사용)
확장성서브프로토콜, 프로토콜 확장라이브러리 기반 확장
핵심 기능연결 유지, 메시지 전송이벤트 처리, 메시지 송수신 메소드
보안wss:// (TLS/SSL 보안)브라우저 보안 모델 의존
브라우저 지원모든 현대 브라우저모든 현대 브라우저

실제 활용 시나리오

  1. 실시간 채팅 애플리케이션
    • WebSocket: 클라이언트와 서버 간 메시지 전송 프로토콜로 사용
    • WebSocket API: 프론트엔드에서 채팅 메시지를 보내고 받는 인터페이스로 사용
  2. 주식 시세 모니터링
    • WebSocket: 서버에서 클라이언트로 지속적인 데이터 스트림을 제공하는 프로토콜
    • WebSocket API: 웹 애플리케이션에서 실시간 주가 업데이트를 처리하는 인터페이스
  3. 온라인 게임
    • WebSocket: 게임 상태 변화를 실시간으로 전송하는 프로토콜
    • WebSocket API: 게임 클라이언트에서 사용자 입력을 서버로 전송하고 게임 상태 업데이트를 받는 인터페이스

용어 정리

용어설명

참고 및 출처