Skip to content

webserver ​

Provides a HTTP server that can be extended by other scripts.

Description ​

This script uses the Hono web application framework to provide an extensible HTTP server.

The server is started once all scripts have called their respective $.connect() function. Until then routes can be added and the port number changed

Service ​

API Docs

typescript
app: Hono;
enableLogging(): void;
printUrls: boolean;
setPort(port: number): void;

Example ​

Config:

typescript
export default defineConfig({
  connections: [{
    kind: 'serialPort',
    path: '/dev/tty.usbmodem',
  }],
  scripts: [
    import('../scripts/webserver'),
    import('../scripts/webserver/get-device-information-api'),

    defineScript(async ($) => {
      const webserverScript = await import('../scripts/webserver');
      const webserverService = await webserverScript.default.requireService();

      webserverService.app.get('/', c => {
        return c.text('Hello world!\n');
      });

      await $.connect();
    }),
  ],
});

Running it in the toolbox:

❯ bin/resol-vbus-core-toolbox.ts --config configs/above-config-saved-to-file.ts
The webserver is available under:
  - http://192.168.xxx.xxx:3000/
  - ...

In a separate terminal:

❯ curl http://127.0.0.1:3000/
Hello world!

❯ curl http://127.0.0.1:3000/cgi-bin/get_resol_device_information
vendor = "RESOL"
product = "DL2Plus"
serial = "000000000000"
version = "0.0.0"
build = "SNAPSHOT"
name = "DL2Plus-000000000000"
features = "vbus"