Skip to content

Instantly share code, notes, and snippets.

@kitsonk
Last active April 15, 2021 22:57
Show Gist options
  • Save kitsonk/4aa92a8a78bbb303a1ef576cdeb4e9a3 to your computer and use it in GitHub Desktop.
Save kitsonk/4aa92a8a78bbb303a1ef576cdeb4e9a3 to your computer and use it in GitHub Desktop.
const decoder = new TextDecoder();
async function handleRequest({ request, respondWith }: Deno.RequestEvent) {
let resolve: (response: Response) => void;
const p = new Promise<Response>((res) => {
resolve = res;
});
const r = respondWith(p);
let response: Response;
if (request.body) {
const body = decoder.decode(await request.arrayBuffer());
console.log("body:", body);
response = new Response("body\n");
} else {
response = new Response("no body\n");
}
resolve!(response);
await r;
console.log("done");
}
for await (const conn of Deno.listen({ port: 8000 })) {
console.log("conn");
(async () => {
const httpConn = Deno.serveHttp(conn);
for await (const requestEvent of httpConn) {
console.log("request");
handleRequest(requestEvent);
}
})();
}
const decoder = new TextDecoder();
async function handleRequest({ request, respondWith }: Deno.RequestEvent) {
console.log("handleRequest");
let resolve: (response: Response) => void;
const p = new Promise<Response>((res) => {
resolve = res;
});
const r = respondWith(p);
let response: Response;
if (request.body) {
const body = decoder.decode(await request.arrayBuffer());
console.log("body:", body);
response = new Response("body\n");
} else {
response = new Response("no body\n");
}
resolve!(response);
console.log(" request done");
return r;
}
const listener = Deno.listen({ port: 8000 });
for await (const conn of listener) {
console.log("conn");
const httpConn = Deno.serveHttp(conn);
(async () => {
for await (const requestEvent of httpConn) {
await handleRequest(requestEvent);
}
})();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment