import { Deno } from "https://deno.land/x/deno@v1.36.0/cli/tsc/dts/lib.deno.ns.d.ts";
const { serveHttp } = Deno;
Provides an interface to handle HTTP request and responses over TCP or TLS
connections. The method returns an HttpConn
which yields up
RequestEvent
events, which utilize the web platform standard
Request
and Response
objects to handle the request.
const conn = Deno.listen({ port: 80 });
const httpConn = Deno.serveHttp(await conn.accept());
const e = await httpConn.nextRequest();
if (e) {
e.respondWith(new Response("Hello World"));
}
Alternatively, you can also use the async iterator approach:
async function handleHttp(conn: Deno.Conn) {
for await (const e of Deno.serveHttp(conn)) {
e.respondWith(new Response("Hello World"));
}
}
for await (const conn of Deno.listen({ port: 80 })) {
handleHttp(conn);
}
If httpConn.nextRequest()
encounters an error or returns null
then the
underlying HttpConn
resource is closed automatically.
Also see the experimental Flash HTTP server Deno.serve
which
provides a ground up rewrite of handling of HTTP requests and responses
within the Deno CLI.
Note that this function consumes the given connection passed to it, thus the original connection will be unusable after calling this. Additionally, you need to ensure that the connection is not being used elsewhere when calling this function in order for the connection to be consumed properly.
For instance, if there is a Promise
that is waiting for read operation on
the connection to complete, it is considered that the connection is being
used elsewhere. In such a case, this function will fail.