본문 바로가기

Spring

Spring에서 웹소켓으로 알림 받기

#웹소켓 정의

- 컴퓨터 네트워크용 통신 규약

- (위키백과) 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜

* 프로토콜

→통신 프로토콜 또는 통신규약: 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

* TCP(Transmission Control Protocol, 전송조종규약): 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 

→TCP/IP라는 명칭으로 널리 불림

→[근거리 통신망, 인트라넷, 인터넷]에 연결된 프로그램 간에 일련의 옥탯을 안정적이며 순서대로 에러없이 교환 가능

-옥텟(octet)(=바이트): 컴퓨팅에서 8개의 비트가 한데 모인 것

→ 전송 계층에 위치

-전송 계층(Transport layer): 계층 구조의 네트워크 구성요소와 프로토콜 내 송신자&수신자를 연결하는 통신 서비스 제공 

* 전이중 통신

→ 이중통신(duplex) 또는 상방향 통신: 두 지점 사이에서 정보를 주고 받는 전자 통신 시스템


# WebSocket 특징

- 접속 확립 → HTTP But 이후 통신 → WebSocket 

- HEADER가 작아 OVERHEAD 적음         

- 데이터 송신과 수신에 각각 커넥션을 맺을 필요 없다                                   


#  WebSocket 이전 실시간 통신 → (HTTP request) + 기술  

- Polling

* 클라이언트가 HTTP request를 서버로 계속 보내서 이벤트 내용을 전달받는 방식

- Long Polling

* 1. 클라이언트에서 서버로 HTTP request 보내고 기다린다. → 2. 서버에서 전달할 이벤트가 있다면 response 메시지 전달 후 연결 종료 (1번 2번 계속 반복)

- Streaming

* 1. 클라이언트에서 서버로 HTTP request 보내고 기다린다. → 2. 서버에서 이벤트를 전달할 때 해당 요청을 끊지 않고 필요한 메시지만 보내기(flush) 반복


# 웹소켓을 사용하는 이유

- 실시간 양방향 데이터 통신

- 많은 수의 동시 접속자 수용 시

- 브라우저에서 TCP기반 통신으로 확장 시 

* 브라우저의 경우 HTTP통신 한 번 데이터 주고 받으면 끝이지만 웹소켓은 해당 페이지의JS에서 반복적으로 실행, 통로가 커넥트 되어있다고 생각하면 된다

- SOA로 확장시 

* Service Oriented Architecture: 대규모 컴퓨터 시스템 구축 시 소프트웨어 기능을 서비스로 판단, 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론