deno.com

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 -N https://docs.deno.org.cn/examples/scripts/http_server_streaming.ts

Deno Deploy Playground中尝试此示例

您找到所需内容了吗?

隐私政策