목록 보기
프론트엔드 시점에서 정리한 SSE 도입과 메시지 유실 해결 과정
프론트엔드

프론트엔드 시점에서 정리한 SSE 도입과 메시지 유실 해결 과정

넥스트리
넥스트리
2026년 10월 28일

두줄요약

AI 챗봇 SSE에서 완료 메시지가 유실된 원인을 채널 생성·삭제 시점의 경쟁 조건으로 분석했습니다. 채널 선등록과 replay 기반 구독으로 연결 순서와 무관하게 결과를 수신하도록 개선했습니다.

문제 상황

  • AI 챗봇 결과 수신을 위한 SSE 연결에서 GENERATING 메시지 후 완료 메시지 미수신
  • heartbeatTimeout 이후 활동 없음 오류와 재연결 발생

원인 분석

  • API 테스트 도구로 동일 증상 재현, React·리스너·SSE 라이브러리 영향 배제
  • SSE 구독 이전 AI 작업 완료 시 channelMap에 채널이 없어 완료 메시지 폐기
  • 완료 처리의 remove로 늦게 연결한 구독자가 기존 채널을 찾지 못하는 경쟁 조건

해결 방법

  • 작업 등록 시점에 replay().all() 채널을 channelMap에 선등록
  • 완료 처리의 채널 조회를 remove에서 get으로 변경하고 완료 신호 뒤 구독 측에서 정리
  • 구독자 수 조건으로 중복 GENERATING 메시지 방지, 늦은 구독자에게 누적 이벤트 재생

적용해볼 점

  • SSE 장애 시 API 테스트 도구로 프론트엔드와 서버 문제 영역 우선 분리
  • 비동기 이벤트 흐름에서 채널 생성·이벤트 발행·채널 삭제 순서 명시적 점검

다음 읽기

#SSE 주제를 다룬 다른 회사 글

SSE 기반 AI Agent 스트리밍 적용기 — Alpy에 자연스러운 대화를 불어넣다

AI Agent 응답 스트리밍에 SSE를 선택하고 POST를 지원하는 Custom EventSource를 구현했습니다. 청크 버퍼링과 연결 관리로 파싱 오류 및 연속 요청 충돌을 해결했습니다.

크라우드웍스
크라우드웍스
프론트엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...