Skip to content

RaftWebServerSysMod

Rob Dobson edited this page May 3, 2026 · 1 revision

WebServer SysMod

Built-in SysMod that hosts an HTTP server, exposes the REST API over HTTP, optionally serves static files, and registers WebSocket channels with the Comms Channels layer.

Source: RaftWebServer/components/WebServer/

What it provides

  • HTTP server on a configurable port with a configurable REST API path prefix.
  • REST API bridge — every endpoint registered via RestAPIEndpointManager::addEndpoint() is reachable as GET/POST/PUT/DELETE <prefix>/<endpoint>....
  • Static file serving from any mounted file system (LittleFS / SPIFFS / SD).
  • WebSocket channels — each entry in the websockets array becomes one or more comms channels using a chosen protocol codec.
  • webcerts REST endpoint for uploading TLS certificates.

SysType configuration

Place a WebServer block in the SysType SysMods array. Typical values:

{
    "name": "WebServer",
    "enable": 1,
    "webServerPort": 80,
    "apiPrefix": "api/",
    "fileServer": 1,
    "numConnSlots": 6,
    "stdRespHeaders": [
        "Access-Control-Allow-Origin: *"
    ],
    "staticFilePaths": "/=/local,/files/sd=/sd",
    "websockets": [
        {
            "pfix": "ws",
            "pcol": "RICSerial",
            "maxConn": 4,
            "txQueueMax": 20,
            "pingMs": 30000
        }
    ],
    "taskCore": 0,
    "taskPriority": 5,
    "taskStack": 5000,
    "sendMax": 5000,
    "clearPendingMs": 0
}
Key Default Meaning
enable false Master switch
webServerPort 80 TCP listen port
apiPrefix "api/" Path prefix for REST endpoints — api/subscription etc.
fileServer true Enable static file handler
numConnSlots platform default Max concurrent HTTP connections
stdRespHeaders [] Header lines added to every response
staticFilePaths "/=/<defaultFS>,/files/local=/local,/files/sd=/sd" Comma-separated urlPath=fsPath pairs
websockets [] Array of websocket configs (see below)
taskCore, taskPriority, taskStack platform defaults Web server task
sendMax platform default Max outbound buffer length
clearPendingMs 0 If > 0, drop pending tx after this many ms

Websocket entry

Key Default Meaning
pfix "ws" URL path prefix and channel interface name
pcol "RICSerial" Protocol codec to attach (RICSerial, RICFrame, RICJSON)
maxConn impl-defined Max simultaneous websocket connections
pingMs impl-defined Ping interval
txQueueMax impl-defined Outbound queue depth

Each connection slot is registered with CommsChannelManager as a channel named <pfix>_<idx>, so connection 0 to pfix:"ws" becomes channel ws_0. See Comms Channels.

REST endpoints exposed

Endpoint Method Purpose
webcerts/set POST Upload TLS certificates (body = JSON document)

Every other endpoint visible over HTTP comes from other SysMods registering with RestAPIEndpointManager. The web server simply forwards.

Programmatic helpers

void serveStaticFiles(const char* servePaths, const char* cacheControl = nullptr);
void enableServerSideEvents(const String& eventsURL);
void sendServerSideEvent(const char* eventContent, const char* eventGroup);

These are typically called from your application's setup() after RaftCoreApp::setup().

Related

Clone this wiki locally