npm.io
0.1.6 • Published 23h agoCLI

@madrisapi/web_server

Licence
Version
0.1.6
Deps
0
Size
27.0 MB
Vulns
0
Weekly
0

web_server

A generic HTTP + WebSocket server library built on Bun. It serves a static site directory, exposes user-defined HTTP routes, upgrades /ws connections to WebSocket, and ships a bidirectional JSON-RPC layer that works the same way on the server and in the browser.

Install

bun add @madisapi/web_server

Quick start

import { WebServer } from '@madisapi/web_server';

const server = new WebServer(3001, 'none');

server.start({
    sitePath: './site',
    api: {
        // Called for every static-file GET request.
        onStaticRequest: async (req, pathname, query) => {
            console.log('Static request:', pathname, query);
        },

        // HTTP/JSON routes – handler signature: (req, pathname, query)
        routes: {
            '/health': () => server.jsonResponse({ status: 'ok' }),
            '/data': {
                GET: (_req, _pathname, query) => server.jsonResponse(query),
                POST: async req => server.jsonResponse(await req.json()),
            },
        },

        // WebSocket RPC.
        websocket: {
            onOpen(ws) {
                ws.register(
                    'add',
                    (a: number, b: number) => Number(a) + Number(b),
                );
                ws.call('welcome', ws.data.connectionId).catch(() => {});
            },
            onMessage(ws, message) {
                ws.handleMessage(String(message));
            },
        },
    },
});

Demos

Directory What it shows
demo/showcase/ Complete showcase: All RPC, callbacks, streaming, HTTP routes, metrics, UI