跳至主要内容

HTTP 服务器:流

一个流式响应回客户端的 HTTP 服务器示例。

在 Github 上编辑
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 中尝试此示例

部署