프록시를 거칠 때 스트리밍이 안 될 때
프록시를 거칠 때 스트리밍이 안 될 때 (Streaming Not Working When Proxied)
AI SDK 스트리밍이 로컬 개발 환경 또는 일부 프록시 환경에서 동작하지 않을 때의 해결법을 담은 문서예요. 특히 **프록시 미들웨어가 응답을 압축(compress)**하도록 설정돼 있으면 스트리밍이 깨지기 때문에, 압축을 끄는 것이 핵심이에요.
출처: 문서
본문
문제 (Issue)
AI SDK 스트리밍이 로컬 개발 환경에서 동작하지 않거나, 일부 프록시 환경에 배포했을 때 동작하지 않습니다. 스트리밍이 되지 않고 잠시 후 전체 응답만 반환됩니다.
원인 (Cause)
이 문제는 프록시 미들웨어 때문에 발생합니다. 미들웨어가 응답을 압축하도록 구성되어 있으면 스트리밍이 실패합니다.
해결 방법 (Solution)
다음을 시도해볼 수 있습니다. 이 해결책은 스트리밍 API에만 영향을 줍니다:
-
'Content-Encoding': 'none'헤더를 추가하세요return createUIMessageStreamResponse({ stream: toUIMessageStream({ stream: result.stream }), headers: { 'Content-Encoding': 'none', }, });
더 알아보기 (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' 모듈을 찾을 수 없음
- 많은 이미지를 처리할 때 높은 메모리 사용