웹소켓

2022. 6. 6. 15:44·개발정보
반응형

웹소켓? 

TCP 연결에 완전한 이중 통신 채널을 제공하는 컴퓨터 프로토콜이다. 

 

서버와 클라이언트 간의 웹소켓 연결은 HTTP 프로토콜을 통해 이루어지는데, 연결이 정상적으로 이루어진다면 
서버와 클라이언트 간에 웹소켓 연결(TCP/IP)이 이루어지고 일정 시간이 지나면 HTTP 연결은 자동으로 끊어진다. 

 

서버와 클라이언트 간의 효율정인 양방향 통신과 데이터 전송을 위해서 사용된다. 

일반적으론 클라이언트에서 Request를 보내면 서버에서 Response로 응답하는 StateLess 관계로 알고 있다. 

즉, HTTP 통신은 클라이언트가 요청을 보내는 경우에만 서버가 응답하는 단방향 통신 방식

하지만, 웹소켓은 StateFull하다. 

매번 요청을 보내는 것이 아닌 한 번의 요청으로 HandShake 과정을 거치고 연결을 유지해서 양방향 통신과 

데이터 이동이 가능하게 되는 것이다. 

 

웹소켓의 특징 

양방향 통신

  • 데이터 송수신을 동시에 처리할 수 있다. 
  • 클라이언트와 서버가 서로 원할 때 데이터를 주고받는다. 

실시간 네트워킹 

  • 웹 환경에서 연속된 데이터를 빠르게 노출한다. 
  • 여러 단말기에서 데이터를 빠르게 교환한다. 
    ex) 채팅, 주식, 비디오 데이터

적은 Overhead

  • Header가 상당히 작아서 OverHead가 적다. 

낮은 부하

  • HTTP Polling과 같은 반이중 방식에 비해 낮은 부하를 사용한다. 

웹소켓의 종류

socket.io

인터넷 익스플로러 구버전 사용자는 웹소켓으로 작성된 웹페이지를 볼 수 없다. 

이런 문제를 해결하기 위해서 socket.io는 웹페이지가 열리는 브라우저가 웹소켓을 지원하면 일반 웹소켓 방식으로, 

지원하지 않으면 http를 이용해 웹소켓을 흉내내는 방식으로 통신을 지원한다. 

 

sockjs

spring에서 구버전 브라우저 문제를 해결하기 위한 방법으로 sockjs를 제공한다. 

서버 개발시 일반 웹소켓으로 통신할지 sockjs 호환으로 통신할지 결정할 수 있다. 

 

stomp

단순 텍스트 지향 메시징 프로토콜이다. spring에 종속적이고, 구독 방식으로 사용하고 있다. 

 

Nodejs를 이용할 땐 socket.io를 주로 사용하고, spring을 사용할 땐 stomp, sockjs를 주로 사용한다. 

반응형
저작자표시 비영리 변경금지

'개발정보' 카테고리의 다른 글

힙 메모리 단편화  (1) 2022.09.16
Github 동작 원리  (0) 2022.09.14
Side Effect  (1) 2022.05.16
Singleton 패턴  (2) 2022.05.04
바인딩  (2) 2022.05.02
'개발정보' 카테고리의 다른 글
  • 힙 메모리 단편화
  • Github 동작 원리
  • Side Effect
  • Singleton 패턴
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    javascript
    Node.js
    영어독학
    타일러영어
    다이소
    자바스크립트
    바질
    영어회화
    리액트
    타입스크립트
    리얼클래스
    리얼학습일기
    프로그래머스
    네트워크
    식물
    next.js
    덤프
    react
    Babel
    알고리즘
    바질 키우기
    redux
    CSS
    Docker
    CCNA
    webpack
    ReactNative
    네이버 부스트캠프
    ChatGPT
    typescript
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
웹소켓
상단으로

티스토리툴바