링크
기능
1:1 채팅
그룹 채팅
트래픽 특성
엄청난 양의 트래픽 그룹 채팅 - 하루에 600억 메시지
오래된 채팅 잘 안봄
Read / Write 비율 1:1
1:1 채팅
클라이언트와 서버는 어떻게 이야기 해야할까? HTTP?
문제 HTTP는 클라이언트만 시작할 수 있음
A → Server 가능 , Server → B 불가능
몇 가지 옵션
Polling (새로운 메시지가 있는지 계속 서버에게 물어보기)
단점
리퀘스트 수가 많아지고
메시지 latency가 생긴다.
Long Polling
새로운 메시지가 있는지 계속 물어보는건 마찬가지인데 메시지가 있거나 타임아웃 할때까지 리퀘스트 잡고 있기
단점
리퀘스트 수 (Polling보다는 낫다)
메시지 latency
WebSocket
클라와 서버사이에 open connection 유지
양방향 소통 가능
그래서 1:1 채팅은..
websocket은 open connection을 유지해줘야하기 때문에 따로 chat server를 만들어서 관리하는 게 좋다.