Next.js API route에서 OpenAI Chat Completions를 stream: true로 받아서 클라이언트로 SSE로 흘려주는 챗봇을 만들고 있어요. 로컬(next dev)에서는 타자 치듯이 토큰 단위로 예쁘게 나옵니다. 그런데 배포(nginx 리버스 프록시 뒤)로 올리면 몇 초 동안 아무것도 안 나오다가 답변 전체가 한 방에 툭 떨어져요. 스트리밍 의미가 없어졌습니다 😭
서버 코드는 대충 이렇게 청크를 그대로 write 하고 있고요, 로컬에서 curl로 때려봐도 실시간으로 잘 흘러옵니다.
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content || "";
res.write(`data: ${JSON.stringify({ delta })}\n\n`);
}Content-Type은 text/event-stream으로 줬고, 클라이언트는 EventSource 대신 fetch + ReadableStream reader로 읽고 있습니다. 앱 코드 문제였으면 로컬에서도 안 됐을 텐데 로컬은 멀쩡해서 네트워크단이 의심되는데 어디를 봐야 할지 감이 안 잡히네요. 혹시 짚이는 데 있으실까요?
댓글 0