상담 챗봇 프론트엔드 엔지니어
챗봇 답변이 스트리밍되는 도중에 다른 대화방으로 이동하면?
스트리밍 청크(Chunk) 파싱, 대화방 전환 시 응답 격리, 생성 중단 처리와 XSS 방지 렌더링을 함께 설계합니다.
상황 배경
AI 답변이 다 만들어질 때까지 기다리지 않고 생성되는 대로 실시간 스트리밍으로 보여주는 채팅 화면입니다. 사용자는 답변이 나오는 도중에 다른 대화방으로 이동하거나 ‘답변 중지’ 버튼을 누를 수 있습니다.
설계 제약 조건
- 답변 생성 중(스트리밍), 완료, 사용자 중단, 에러 상태를 명확히 구분해야 합니다.
- 이전 대화방에서 뒤늦게 도착한 스트림 조각이 현재 열려 있는 다른 대화방에 섞이면 안 됩니다.
- 네트워크에서 읽은 바이트 청크(chunk) 하나가 항상 완성된 JSON 메시지 하나와 일치한다고 가정할 수 없습니다.
- 모델이 생성한 답변 문자열에도 HTML 태그나 스크립트가 포함될 수 있으므로 신뢰할 수 없는 외부 입력으로 다뤄야 합니다.
각 선택지의 예상 결과와 트레이드오프를 비교하는 설계 연습 시나리오입니다. 서비스 요구사항에 따라 다른 선택도 가능하며, 연결된 코드 실습은 아래 링크에서 바로 실행해 볼 수 있습니다.
질문 1 / 4
JSON 메시지가 두 번에 나뉘어 도착했을 때
네트워크 상황에 따라 하나의 JSON 이벤트가 두 개의 청크로 쪼개져 들어오거나, 반대로 여러 개의 이벤트가 한 청크에 뭉쳐서 도착할 수 있습니다.
reader.read()로 읽은 청크를 매번 바로 JSON.parse해도 될까요?
1 / 4