Module

x/oak/examples/closeServer.ts

A middleware framework for handling HTTP with Deno 🐿️ 🦕
Extremely Popular
Go to Latest
File
/* * This is an example of a server that closes when hitting the /close route. */
// Importing some console colorsimport { green, cyan, bold, yellow,} from "https://deno.land/std@0.51.0/fmt/colors.ts";
import { Application, Context, Router, Status } from "../mod.ts";
function notFound(context: Context) { context.response.status = Status.NotFound; context.response.body = `<html><body><h1>404 - Not Found</h1><p>Path <code>${context.request.url}</code> not found.`;}
const controller = new AbortController();
const router = new Router();router .get("/", (context) => { context.response.body = "Hello world!"; }) .get("/close", async (context) => { context.response.body = "Bye!"; // This will cause the application to stop listening and stop processing // requests controller.abort(); });
const app = new Application();
// Loggerapp.use(async (context, next) => { await next(); const rt = context.response.headers.get("X-Response-Time"); console.log( `${green(context.request.method)} ${cyan(context.request.url.pathname)} - ${ bold( String(rt), ) }`, );});
// Response Timeapp.use(async (context, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; context.response.headers.set("X-Response-Time", `${ms}ms`);});
// Use the routerapp.use(router.routes());app.use(router.allowedMethods());
// A basic 404 pageapp.use(notFound);
// Utilise the signal from the controllerconst { signal } = controller;const options = { hostname: "127.0.0.1", port: 8000, signal };console.log( bold("Start listening on ") + yellow(`${options.hostname}:${options.port}`),);await app.listen(options);console.log(bold("Finished."));