less than 1 minute read

Web Socket

양방향 데이터 통신

양방향 데이터 통신 프로토콜

데이터는 packet 형태로 전달

전송은 커넥션 중단과 추가 HTTP 요청 없이 양방향 전송

  • new WebSocket

    웹소켓 연결 만들 시 호출

    ws 라는 특수 프로토콜 사용

        let socket = new WebSocket("ws://url")
    
  • wss

    암호화된 WebSocket

    WebSocket 사용시 지향

    TSL (전송 계층 보안) 이라는 계층 통과해 전달

    송신자가 암호화 시키고 서버에서 수신자가 복호화

  • 이벤트

    소켓 정상적으로 만들어지면 사용

    open : 커넥션 정상 생성

    message : data received

    error : WebSocket 에러

    close : 커넥션 종료

  • 핸드 셰이크

    new WebSocket(url) 호출해 생성 시 즉시 연결 시작

    바닐라 JS 로 헤더 설정 막혀있기 때문에 핸드셰이크 모방 불가능.

    • 순서

      1. 브라우저가 HTTP 요청으로 헤더에 웹 소켓 지원하냐고 물어봄

      2. 서버가 HTTP 응답으로 지원 여부 전송

      3. 지원할 시 연결/지원 안 할 시 안됨

    • 요청 헤더

      Origin : 클라이언트 오리진. 서버가 확인하고 소켓 통신 할 지 말지 결정함. 크로스 오리진 요청 지원.

      Connection : 클라이언트가 프로토콜 바꾸고 싶다는 신호

      Upgrade : 요청 프로토콜 의미

      Sec-WebSocket-Key : 보안을 위해 브라우저에서 생성한 키

      Sec-WebSocket-Version : 웹 소켓 프로토콜 버전

  • extensions 와 subprotocols 헤더

    extensions : 프로토콜 기능 확장

    subprotocol : 서브 프로토콜 사용해 데이터 전송 시

    클라이언트가 extensions, subprotocol 이용해 통신할 시 서버는 지원하는 extensions, subprotocol 응답 헤더에 담아 전달해야 함

Categories: ,

Updated: