/** @jsx h */
import html, { h } from "https://deno.land/x/htm@0.2.3/mod.ts";
const writables = [] as WritableStream[];
Deno.serve({ port: 8000 }, async (request: Request) => {
if (request.url.endsWith("/receive")) {
await Promise.all(writables.map(async (writable) => {
await request.body?.pipeTo(writable)
}));
return new Response(null, { status: 200 });
}
if (request.url.endsWith("/video")) {
const headers = new Headers();
headers.set("Content-Type", "video/mp4");
const { readable, writable } = new TransformStream();
writables.push(writable);
return new Response(readable, { headers });
}
return html({
title: "Stream",
body: (
<body>
<video width="100%" height="100%" src="/video" autoplay controls></video>
</body>
),
});
});
/** @jsx h */
import html, { h } from "https://deno.land/x/htm@0.2.3/mod.ts";
const writables = [] as WritableStream[];
Deno.serve({ port: 8000 }, async (request: Request) => {
if (request.url.endsWith("/receive")) {
await Promise.all(writables.map(async (writable) => {
await request.body?.pipeTo(writable)
}));
return new Response(null, { status: 200 });
}
if (request.url.endsWith("/video")) {
const headers = new Headers();
headers.set("Content-Type", "video/mp4");
const { readable, writable } = new TransformStream();
writables.push(writable);
return new Response(readable, { headers });
}
return html({
title: "Stream",
body: (
<body>
<video width="100%" height="100%" src="/video" autoplay controls></video>
</body>
),
});
});