본문 바로가기

BackEnd/Spring

sockets

반응형

참고자료


위키 : https://ko.wikipedia.org/wiki/%EC%9B%B9%EC%86%8C%EC%BC%93

웹소켓으로 개발전 알아야 할것들 : https://adrenal.tistory.com/20

기본적인 내용들 : https://victorydntmd.tistory.com/250

https://developer.mozilla.org/ko/docs/WebSockets/Writing_WebSocket_servers


https://engineering.huiseoul.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%EA%B0%80-%EC%9B%B9%EC%86%8C%EC%BC%93-%EB%B0%8F-http-2-sse-1ccde9f9dc51


https://develop-im.tistory.com/34


https://lkhlkh23.tistory.com/121 : 폴링과 롤폴링, 웹소켓


유튜브

https://www.youtube.com/watch?v=BuZ3yx3mZrM


https://developer.mozilla.org/ko/docs/WebSockets/Writing_WebSocket_servers



WebSocket 


가장 기본적인 순수한 웹소켓이다. 웹표준으로 해서 만들어진 소켓이다.


사용자 브라우저랑 서버하고의 소켓통신을 할때 http로 한다.


프로토콜은 ws라 하지만 내부에서는 http프로토콜을 충족한다.


사용자의 브라우저와 서버 사이의 인터렉티브 통신 세션을 설정할 수 있게 하는 기술


Socket over HTTP : socket은 HTTP상에 존재 (ws://… or wss://…)


ws : ws가 웹소켓 프로토콜임

wss : https기반에 있는것 secure한것 : 소켓이라고 하더라도 안전하지않음 날라가는 패킷을 누군가 다 따갈수 있음


http는 서버에 요청후 응답받고 끊음.


양쪽이 강하게 long polling 


정해진 기간없이 서버랑 클라이언트가 계속 붙어있음 끊어지지 않고 실시간


Full duplex , 2-way communication 


polling , Long Polling


polling : 폴링은 요청후 응답이와도 끊지 않고있는것

Long Polling : 소켓을 맺어 두는것 양쪽에



WebSocket을 사용하기 위해서는 ws 프로토콜을 사용한다.


WebSocket은 Transport Protocol로서, 웹에서 사용하는 Socket으로 생각하면 된다.


웹은 HTTP 프로토콜을 사용하는데, WS 프로토콜을 사용하기 위해서는 어떤 과정을 거칠까?


HTTP에서 WebSocket으로의 프토토콜 전환을 WebSocket HandShake라고 한다.


브라우저는 프로토콜을 HTTP에서 Websocket으로 전환하려는 


요청을 Header에 Upgrade 속성을 추가하여 서버로 보낸다.


이 요청을 받은 서버가 WebSocket 프로토콜을 이해하면, Upgrade 속성을 통해 프로토콜 전환을 동의하게 되고,


그러면 브라우저와 서버는 ws 프로토콜을 사용하게 된다.


ws 프로콜로 전환되면, HTTP 연결은 중단되며 동일한 TCP / IP 연결을 통해 WebSocket 연결로 대체


WebSocket 연결은 기본적으로 HTTP( 80 ), HTTPS ( 443 )와 동일한 포트를 사용


즉, CORS 적용이나 인증 등의 과정을 기존 HTTP 방식으로 사용할 수 있는 장점



2.  WebSocket 특징


     1) 양방향 통신


WebSocket에서 클라이언트와 서버는 지속적으로 연결된 TCP 라인을 통해 양뱡향 통신을 한다.


처음 WebSocket을 사용할 때 Ajax와 비슷한 느낌을 받았는데, 가장 큰 차이점은 서버에서 클라이언트로 요청을 보낼 


수 있다는 것이다.


Ajax는 클라이언트에서 서버로밖에 요청을 못하는 단방향 통신


WebSocket은 어느 쪽에서든 요청을 보낼 수 있는 양방향 통신



2) 실시간 통신 / 성능


WebSocket은 클라이언트와 서버가 연결되어 있기 때문에 실시간 통신이 가능


그래서 실시간 채팅, 주식 등 실시간 정보가 필요한 서비스에서 주로 활용




http와 차이


http는 요청이 있어야만 서버가 응답이 있는 pull방식




웹소켓은 server push 방식


클라이언트가 요청하지 않아도 서버 푸시






초기 http를 그대로 사용한 폴링 방식


브라우저가 요청하면 서버가 응답 실시간 보장못함




웹소켓 서버는 브라우저가 서버측으로 웹소켓서버로 업그레이드해달라는 요청이 처음들어감


그러면 서버는 웹소켓 연결을 맺고있는동안은 메시지를 보낼수 있는것



웹소켓 업그레이드 과정 (웹소켓 핸드쉐이크 : 기존의 http방식 그대로 이용)











반응형

'BackEnd > Spring' 카테고리의 다른 글

스프링 프로젝트 구조  (0) 2021.01.13
유닛 테스트  (0) 2020.05.08
한 서버에 프로젝트 2개배포  (0) 2020.02.11
스프링 mvc 프로젝트의 기본구성  (0) 2020.02.10
http 에러코드  (0) 2020.02.10