개발자

sse 연결시 쓰레드 상태가 궁금합니다

2023년 12월 08일조회 111

sse에 대해 공부하고 있던 중 sse는 클라이언트와 커넥션이 끊어질 때 까지 커넥션을 계속 유지 한다는 내용을 보았는데요. 이때 커넥션이 유지된다는게 쓰레드를 계속 잡아먹고 있다는 건가요? 아니면 커넥션은 유지되지만 쓰레드랑은 상관 없는걸까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

leeflection님의 프로필 사진

결론만 말씀드리자면 쓰레드는 반환되고 커넥션은 유지됩니다.

장성호님의 프로필 사진

Server Sent Event는 비동기 방식을 사용해 구현합니다. 따라서 연결을 유지하는 동안 쓰레드를 계속 점유하지는 않아요. 대신 Event를 보내주기 위해서 무언가 처리가 필요할 때는 쓰레드를 점유합니다. 구체적인 시나리오는 다음으로 알고 있어요! 1. SSE 소켓을 클라이언트에게 발급하는 Http 요청을 처리하는 동안 쓰레드를 점유한다. 2. 초기 연결 설정이 끝나면 SSE 소켓은 힙에 저장된다. 쓰레드를 점유하지는 않는다. 3. 클라이언트에게 이벤트를 전송할 때는 쓰레드를 점유하고 작업을 처리한다. 이와 관련해서 blocking / non-blocking, sync / async 모델에 대해서 공부해보면 이해하는데 더 도움이 될 것 같아요! 그리고 리눅스 커널에서 제공하는 epoll이라는 I/O 이벤트 알림 인터페이스도 도움이 될 거 같아요. 비동기 서버는 보통 이 인터페이스를 활용하는 걸로 알고 있어서요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!