20210114(목)
2021-01-14
1. 학습 날짜
2020-01-14
2. 학습 시간
11:30 ~ 13:00, 14:00 ~ 18:00, 20:00 ~ 21:00
3. 학습 범위 및 주제
websocket
4. 학습 목표
websocket에 대해 알아보기
5. 학습 정리
x
6. 상세 학습 내용
Websocket
웹소켓은 HTTP와 같은 하나의 프로토콜이다.
웹소켓이 나오게된 역사적 배경을 먼저 이해하자.
태초에 HTTP 프로토콜이 있었다. 이 프로토콜은 누구나 알겠지만 매우 성공한 프로토콜이다.
하지만 시간이 흐르면서 이 프로토콜도 약점이 있다는게 발견이 되었는데....
HTTP프로토콜은 클라이언트가 서버로 먼저 요청을 보내야지만 서버가 응답을 할 수 있는 구조(서버가 먼저 클라이언트한테 요청을 보낼 수 없다. 즉 일방적인 관계)
단순한 요청이었는데도 불구하고 페이지 전체를 리로드 해야하는 문제가 있었다.
단순한 요청이었는데 페이지 전체가 리로드되면 클라이언트나 서버나 둘 모두에게 부하가 발생하게 된다.
따라서 이 문제를 해결하고나 나온게 AJAX.
AJAX는 프로토콜은 아니고 기술이다.
이 기술은 자바스크립트의 기능을 활용해서 구현되는데, HTML의 돔 요소를 동적으로 수정 하는 것이다.
동적으로 DOM 요소가 변경되면 웹브라우저는 페이지 전체를 리로드 하는게 아닌 수정된 부분만 렌더링을 하게 된다.
이로써 두 번째 문제인 전체 리로드 문제를 해결했다. 이번에는 첫 번쨰 문제를 해결해 보자.
만약 서버가 먼저 클라이언트한테 요청을 보낼 수 있다면, 즉 쌍방향 통신이 가능하게 된다면 어떤 이점이 생기는지 생각해보자.
페이스북을 생각해보자. 로그인을하면 오른쪽에 친구들의 상태가 보인다. 이 상태는 실시간으로 변경 된다.
클라이언트가 이를 요청했는가? 아니다 서버가 다른 유저들의 세션 상태를 보고 서버에서 이를 갱신한다음에 클라이언트한테 이 데이터를 전송하는 것이다.
즉 쌍방향 통신이 가능하게 됨으로써 실시간으로 무엇인가를 클라이언트가 요청하지 않고도 알 수 있게 된 것.
이게 바로 웹소켓의 대표적인 예다.
즉 웹소켓은 브라우저(클라이언트)와 서버 간의 양방향 통신을 가능하게 해줌으로써 일방적인 관계만을 갖고 있는 HTTP를 보완할 수 있게 되었다.
웹소켓은 HTTP 위에서 동작한다.
또한 웹소켓은 오버헤드가 적어서 속도 또한 빠르다.
7. 오늘 학습 내용에 대한 개인적인 총평
항상 공부를 많이 못한다고 핑계를 대는데.. 요즘은 정말로 공부를 안한다. 반성하자.
8. 다음 학습 계획
액션 케이블
메신저 프로그램 작성해보기
Last updated