From d10ea1b0fda9a9eb68fe96a7355502c4fbe21666 Mon Sep 17 00:00:00 2001 From: mstfyldz Date: Wed, 12 Aug 2026 12:48:04 +0300 Subject: [PATCH] fix(chat): add SSE padding to bypass proxy buffering --- src/controllers/chat.controller.ts | 8 ++++++++ test_analysis.js | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 test_analysis.js diff --git a/src/controllers/chat.controller.ts b/src/controllers/chat.controller.ts index 0998254..e720eff 100644 --- a/src/controllers/chat.controller.ts +++ b/src/controllers/chat.controller.ts @@ -33,10 +33,18 @@ function startSse(res: Response) { // toplu halde göndermesini önlemek için. res.setHeader('X-Accel-Buffering', 'no'); (res as any).flushHeaders?.(); + // Cloudflare gibi proxy'lerin buffer'ını aşmak için ~2KB dummy padding gönder. + res.write(`: ${' '.repeat(2048)}\n\n`); + if (typeof (res as any).flush === 'function') { + (res as any).flush(); + } } function sseWrite(res: Response, payload: Record) { res.write(`data: ${JSON.stringify(payload)}\n\n`); + if (typeof (res as any).flush === 'function') { + (res as any).flush(); + } } interface ChatAttachment { filename: string; text: string; } diff --git a/test_analysis.js b/test_analysis.js new file mode 100644 index 0000000..93db725 --- /dev/null +++ b/test_analysis.js @@ -0,0 +1,9 @@ +require('dotenv').config(); +const { createClient } = require('@supabase/supabase-js'); +const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY); +async function run() { + const { data, error } = await supabase.from('analyses').select('*').order('created_at', { ascending: false }).limit(3); + console.log(JSON.stringify(data, null, 2)); + console.error(error); +} +run();