SSE — 서버가 먼저 말하는 법 · 와이어와 끊김 · 퀴즈
SSE 확인
문항 8개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
SSE 이벤트 하나의 끝을 표시하는 것은?
- 줄 끝에 붙이는 세미콜론
- 아무것도 없는 빈 줄 하나
- `end:` 필드를 한 줄 보낸다
- TCP 연결을 끊는다
`id:` 를 붙여 두면 브라우저가 재접속할 때 무엇을 하나?
- 마지막 id 를 Last-Event-ID 헤더로 보낸다
- 재접속만 하고 id 는 그냥 버린다
- 마지막 id 를 쿠키에 저장해 보낸다
- URL 쿼리 문자열에 id 를 붙인다
'코드는 맞는데 화면에 한꺼번에 나온다'의 가장 흔한 원인 셋이 아닌 것은?
- 리버스 프록시의 응답 버퍼링
- gzip 압축
- 제너레이터가 아니라 리스트를 만들어 반환
- TLS 암호화
`: ping` 한 줄을 주기적으로 보내는 이유는?
- 클라이언트에 알림을 준다
- 연결 속도를 잰다
- 바이트를 흘려 로드밸런서의 유휴 타임아웃을 넘긴다
- 순서를 맞춘다
HTTP/1.1 에서 SSE 를 쓸 때 걸리는 제한은?
- 한 이벤트의 크기가 64KB 로 제한된다
- 1분이 지나면 서버가 강제로 끊는다
- 텍스트만 되고 바이너리는 못 보낸다
- 오리진당 동시 연결 6개 — 탭을 여러 개 열면 막힌다
서버 제너레이터에 `finally` 를 붙여야 하는 이유는?
- 제너레이터 문법상 반드시 필요하다
- 이벤트 전송 속도가 조금 빨라진다
- 클라이언트가 끊어도 정리하지 않으면 좀비 태스크가 쌓인다
- 끊긴 뒤 재접속이 더 빨라진다
WebSocket 을 골라야 하는 경우는?
- 클라이언트가 자주 보내거나 바이너리가 필요할 때
- 서버에서 알림만 내려보낼 때
- 요청에 인증 헤더를 붙여야 할 때
- 리버스 프록시 뒤에 있을 때
`curl` 로 스트리밍을 진단할 때 `-N` 을 붙이는 이유는?
- 출력을 색으로 예쁘게 보여 준다
- curl 자신의 출력 버퍼링을 꺼서 오진을 막으려고
- 응답 타임아웃을 무제한으로 늘린다
- 응답 헤더까지 함께 보여 준다