[Web] Websocket

Introduction

웹서비스가 발전함에 있어서 기존 Http 프로토콜이 지니는 한계인 State Less가 아닌 새로운 방식의 통신이 필요했었다. 그렇게 탄생하게된 프로토콜이 WebSocket이다. Websocket은 full-duplex, bi-directional, persistent connection의 특징을 가진다. Websocket이 탄생하기 전 Http에서의 양방향 통신을 위해 Polling, Long Polling 등을 수행했었다. 하지만 폴링의 경우 지속적으로 요청을 보내야하는 점에서 서버의 부담이 증가되는 문제가 있었다. WebSocket은 Tcp를 기반으로 하며 핸드쉐이크시에 Http 요청을 Websocket 프로토콜로 업그레이드해 사용한다.

1
2
3
4
5
6
7
8
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com


SockJS

모든 브라우저가 웹소켓을 지원하는것이 아니기 때문에 웹소켓의 대체 옵션으로 SockJS가 있다. SockJS는 웹소켓과 비슷한 동작을 제공하는 자바스크립트 라이브러리다.

STOMP

STOMP는 Simple Text Oriented Messaging Protocol의 약자이다. STOMP는 HTTP로 모델링이 되었기 때문에 웹소켓과 같은 안정적인 양방향 스트리밍 네트워크 프로토콜에서 사용할 수 있다. 또한 STOMP 클라이언트가 모든 STOMP 메세지 브로커와 통신하여 다양한 플랫폼이나 브로커간 쉽고 광범위하게 상호운용되는 메세지 서비스를 제공할 수 있다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/12/Web/websocket/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.