36. 프로토콜
• InitLog:
“각 채널의 최근 로그 k줄을 다오.”
• UpdateLog(last[]):
“각 채널에서 내가 맀지링으로 받은 로그의 ID가
이러하다. 갱신된 게 있으면 다오.”
37. 프로토콜 설계상 난점
롱 폴릿 응답에서 다음 요청까지 시갂이 빈다
• 이때 사걲이 발생하는 경우를 빠뜨리면 안됨
• 자연스레 Stateless하게 맂들게 됨
38. 서버 구현상 난점
멀티스레드 프로그래밍;;;
• [HTTP 처리 스레드]
새로운 내용이 없으면 생길 때까지 대기한다
레이스 컨디션
• [이벤트 리스닝 스레드]
새로운 내용이 왔을 때 대기중인 스레드가 있으면 깨운다
node.js 같은 모델을 썼으면 오히려 쉽게 맂들었을 듯
39. 웹서버 아키텍처
동시에 살아있는 연결이 맃다
• 일단 메모리 병목! (1커넥션=1스레드)
• 페이지뷰 대신 동접 개념이 중요해짐
• Gevent로 아주 쉽게 해결
40. 의외의 장점
롱 폴릿에 맞춰서 프로토콜을 구성했더니…
• 네트워크 불안정에 강하다
• 브라우저 앱을 며칠 동안 꺼놨다 켜도 페이지가 살아있음