배포했을 때 스트리밍이 안 될 때
배포했을 때 스트리밍이 안 될 때 (Streaming Not Working When Deployed)
로컬 개발 환경에서는 스트리밍이 잘 되는데, 배포한 앱에서는 스트리밍이 동작하지 않을 때의 해결 방법을 정리한 문서예요. "스트리밍이 아니라 잠시 후 전체 응답만 통째로 나온다"는 전형적인 증상이 있을 때, 응답 헤더를 눈여겨보시면 대부분 해결돼요.
출처: 문서
본문
문제 (Issue)
AI SDK로 스트리밍이 로컬 개발 환경에서는 잘 동작합니다. 하지만 배포했을 때는 배포된 앱에서 스트리밍이 동작하지 않습니다. 스트리밍이 되지 않고 잠시 후 전체 응답만 반환됩니다.
원인 (Cause)
이 문제의 원인은 다양하며 배포 환경에 따라 다릅니다.
해결 방법 (Solution)
다음과 같은 방법을 시도해볼 수 있습니다:
-
'Transfer-Encoding': 'chunked'및/또는Connection: 'keep-alive'헤더를 추가하세요return createUIMessageStreamResponse({ stream: toUIMessageStream({ stream: result.stream }), headers: { 'Transfer-Encoding': 'chunked', Connection: 'keep-alive', }, });
더 알아보기 (Learn more)
- Azure OpenAI 스트리밍 느림
- 클라이언트 컴포넌트에서의 Server Actions
- useChat/useCompletion 스트림 출력에 0:... 가 텍스트 대신 표시됨
- Streamable UI 오류
- Tool Invocation 결과 누락 오류
- 배포했을 때 스트리밍 안 됨
- 프록시를 거칠 때 스트리밍 안 됨
- Vercel에 배포할 때 타임아웃
- 닫히지 않은 스트림
- useChat 스트림 파싱 실패
- Server Action plain objects 오류
- useChat 응답 없음
- useChat에서 커스텀 headers/body/credentials가 동작하지 않음
- Zod와 AI SDK 5에서 TypeScript 성능 문제
- useChat "An error occurred" 오류
- useChat에서 assistant 메시지 반복
- 스트림이 중단될 때 onEnd가 호출되지 않음
- 구조화된 출력과 함께하는 도구 호출
- 중단(abort)과 이어서 재개 가능한 스트림
- streamText가 조용히 실패함
- 스트리밍 상태는 표시되는데 텍스트가 안 나옴
- useChat과 함께하는 stale body 값
- onToolCall과 함께하는 타입 오류
- 지원되지 않는 모델 버전 오류
- OpenAI에서 객체 생성 실패
- 도구 결과 누락 오류
- 모델이 "LanguageModelV1" 타입에 할당되지 않음
- TypeScript 오류 "Cannot find namespace 'JSX'"
- React 오류 "Maximum update depth exceeded"
- Jest: '@ai-sdk/rsc' 모듈을 찾을 수 없음
- 많은 이미지를 처리할 때 높은 메모리 사용