HTTP 服务器:流
一个流式响应回客户端的 HTTP 服务器示例。
function handler(_req: Request): Response {
设置一个变量来存储计时器 ID 和 ReadableStream。
let timer: number | undefined = undefined;
const body = new ReadableStream({
当流首次创建时,启动一个间隔,每秒发射一个包含当前时间的块。
start(controller) {
timer = setInterval(() => {
const message = `It is ${new Date().toISOString()}\n`;
controller.enqueue(new TextEncoder().encode(message));
}, 1000);
},
如果流关闭(客户端断开连接),取消间隔。
cancel() {
if (timer !== undefined) {
clearInterval(timer);
}
},
});
返回一个以流作为主体的内容响应。
return new Response(body, {
headers: {
"content-type": "text/plain",
"x-content-type-options": "nosniff",
},
});
}
要在默认端口启动服务器,请使用处理程序调用 `Deno.serve`。
Deno.serve(handler);
使用 Deno CLI 在本地运行 此示例
deno run --allow-net https://docs.deno.org.cn/examples/http-server-streaming.ts
在 Deno Deploy Playground 中尝试此示例