HTTP 服务器:流式传输
在 Github 上编辑
一个示例 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/scripts/http_server_streaming.ts
在 Deno Deploy playground 中尝试此示例