Lewati ke konten

Response Stream

Method ctx.send.stream() mengembalikan response body dari ReadableStream, berguna untuk streaming data besar atau server-sent events tanpa buffering penuh.

Penggunaan Dasar

typescript
// 1. Import tipe Context
import type { Context } from '@neabyte/deserve'

export function GET(ctx: Context): Response {
  // 2. Buat ReadableStream (contoh: kirim dua chunk teks)
  const stream = new ReadableStream({
    start(controller) {
      controller.enqueue(new TextEncoder().encode('Hello\n'))
      controller.enqueue(new TextEncoder().encode('World\n'))
      controller.close()
    }
  })
  // 3. Kirim response dengan body stream
  return ctx.send.stream(stream)
}

Dengan Content-Type Kustom

Parameter ketiga adalah content type (default application/octet-stream):

typescript
export function GET(ctx: Context): Response {
  // 1. Siapkan stream (definisikan di tempat lain)
  const stream = new ReadableStream({ ... })
  // 2. Param ketiga: content-type (default application/octet-stream)
  return ctx.send.stream(stream, undefined, 'text/plain')
}

Dengan Status Dan Headers

typescript
export function GET(ctx: Context): Response {
  // 1. Siapkan stream
  const stream = new ReadableStream({ ... })
  // 2. Param kedua: status + headers; ketiga: content-type
  return ctx.send.stream(stream, {
    status: 200,
    headers: { 'X-Custom': 'value' }
  }, 'application/x-ndjson')
}

Signature Method

typescript
ctx.send.stream(
  stream: ReadableStream,
  options?: ResponseInit,
  contentType?: string
): Response
  • stream - ReadableStream yang dipakai sebagai body response
  • options - Opsional; status dan headers (ResponseInit)
  • contentType - Opsional; default 'application/octet-stream'

Dirilis di bawah Lisensi MIT.