import { Middleware } from "@oak/oak/middleware"; import { socketHandler } from "./handler.ts"; export const socketMiddleware: (path: string) => Middleware = (pathname) => (ctx, next) => { // must be an upgradable websocket connection to api root if (ctx.request.url.pathname !== pathname || !ctx.isUpgradable) { return next(); } // then we'll upgrade and connect a handler const ws = ctx.upgrade(); ws.onopen = socketHandler; };