
2. Polling과 long polling, 토큰 기반 인증, 웹 저장소
2-1. Polling과 long polling
1) http요청은 유지가 될까
HTTP 프로토콜 클라이언트는 요청을 하고, 서버는 응답을 한다!
그럼 이 요청과 응답은 영원히 이어질까요? 정답은
❌❌❌!
한 번 요청을 보내고 응답을 받으면 그 요청은 거기서 끝이 납니다.
- HTTP의 특징인 비연결성 때문.
- 요청을 주면, 응답을 줌!
- 클라이언트는 요청만, 서버는 응답만 가능!
2) 바뀐 데이터를 받아오기 위한 기법, 폴링
폴링
브라우저가 일정 주기를 두고 요청을 보내는 것
- 주기적으로 요청을 보내고 그에 따른 응답을 받아옴.
- 실시간으로 바뀐 데이터를 받아올 수 없음.
ex) 채팅방에 새로운 채팅이 뜸.
3) 짧은 폴링이 부하를 일으킨 다면, 롱 폴링
롱 폴링
요청을 보내고 응답을 지연시키는 것
- 요청을 보내고 서버가 그 응답을 바로 보내지 않는 것.
- 데이터의 변동이 있다면 바로 응답을 보냄.
- 데이터 변동이 없다면 서버는 응답을 일정 시간동안 지연함.
ex) 5초에 한 번씩 서버에게 데이터를 요청했는데 10분동안 아무런 새 대화가 없음.
이렇게 되면 120개의 요청을 낭비하게 된 셈임. => 낭비가 많음.
차라리 서버에 요청을 준 다음에 바로 응답을 하지 말자!(1분 기다림)
기다렸다가 데이터의 변동이 있으면 응답을 주자!
1분을 기다렸는데도 데이터의 변동이 없으면 데이터의 변동이 없다고 응답을 주고,
데이터의 변동이 있다면 1분 내에도 응답을 해줌.
만약 데이터의 변동이 없다는 응답을 받으면 클라이언트는 다시 서버에 데이터 요청을 보냄.
- 단점 : 메시지가 끊임없이 오게 되면 데이터가 빈번하게 업데이트가 된다는 얘기.
폴링보다 롱 폴링이 보내는 데이터의 크기가 훨씬 크기 때문에
크기가 큰 데이터가 빈번하게 왔다갔다 하면 오버헤드가 날 가능성이 꽤 있음.
- 그렇다면, 폴링과 롱 폴링 모두 단점이 있는데 이걸 굳이 사용하는 이유가 무엇인가? :
클라이언트와 서버가 서로 요청과 응답을 주고 받을 때 무조건 클라이언트가 먼저 요청하게 되어 있기 때문.
절대 서버가 먼저 요청을 할 수 없음.(양방향 X)
폴링과 롱 폴링의 예를 실시간 채팅으로 들었는데,
사실 실시간 채팅을 구현할 때는 폴링과 롱 폴링보다 포켓을 많이 사용함.
2-2. 토큰 기반 인증
1) 토큰 기반 인증이란?
서버는 내가 이전에 로그인 요청을 보냈는지 알고 있을까? :
No. 위에서 말한대로 요청과 응답은 단발성. => 무상태성
[옛날 이야기 - 세션 기반 인증]
예전에는 사용자의 로그인 상태를 서버가 전부 가지고 있었어요.
서버의 세션에 사용자 정보를 넣고 이 사람이 로그인을 했다 안했다를 전부 기록하고 기억했습니다.
이 세션은 서버의 메모리나 데이터베이스 등에 저장해두는데,
로그인한 사용자가 많아지면 서버에 부하가 많이 오겠죠?
그렇다고 서버를 여러개 놓자니 관리가 까다로워지고요.
→ 그래서 최근에는 오늘 배울 토큰 기반 인증 방법을 많이 사용해요!
[토큰 기반 인증]
토큰 기반 인증은 사용자가 맞아!라는 정보를 가진 토큰으로 서로 사용자임을 확인하자는 프로토콜이에요.
공연의 입장권 같은 거라고 생각하시면 좋습니다.
'React' 카테고리의 다른 글
React) Youtube API를 이용하여 Youtube 만들기 (0) | 2023.05.25 |
---|---|
리액트 심화과정 노션. (0) | 2023.05.09 |
다시 시작하는 리액트 - 리액트 심화 3-1 Quiz (0) | 2023.05.05 |
다시 시작하는 리액트 - 리액트 심화 3-1 (0) | 2023.05.04 |
다시 시작하는 리액트 - 리액트 심화 2-3 (0) | 2023.05.03 |
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!