Files
bun-src/docs/guides/http/stream-iterator.mdx
2026-08-27 21:09:14 +00:00

50 lines
1.2 KiB
Plaintext

---
title: Streaming HTTP Server with Async Iterators
sidebarTitle: Stream with iterators
mode: center
---
In Bun, a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) accepts an async generator function as its body, so you can stream data to the client as it becomes available rather than waiting for the entire response to be ready.
```ts stream-iterator.ts icon="/icons/typescript.svg"
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
// An async generator function
async function* () {
yield "Hello, ";
await Bun.sleep(100);
yield "world!";
// you can also yield a TypedArray or Buffer
yield new Uint8Array(["\n".charCodeAt(0)]);
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});
```
---
You can pass any async iterable directly to `Response`:
```ts stream-iterator.ts icon="/icons/typescript.svg"
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
{
[Symbol.asyncIterator]: async function* () {
yield "Hello, ";
await Bun.sleep(100);
yield "world!";
},
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});
```