deno.com

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 中尝试此示例

部署

您找到您需要的了吗?

隐私政策