webserver.js

webserver.js is a Node.js-based web server that provides a modern, extensible backend for full-stack web applications in WinCC OA.

webserver.js runs as a JavaScript Manager and serves as a backend for WinCC OA web applications, including the Dashboard. It provides a modern Node.js-based web server with Express-style routing, built-in HTTPS support with configurable port settings, and HTTP and WebSocket communication on the same port.

The server handles the WinCC OA Dashboard and web client applications out of the box. ULC UX requests are forwarded to webclient_http.ctl. The architecture is extensible — the server can be customized with TypeScript or CTRL handlers, and customer extension packages are available via npm (@wincc-oa/backend and @wincc-oa/create-backend).

Internally, webserver.js runs within the WinCC OA JavaScript Manager. It uses an Express-compatible HTTP framework to handle incoming requests, serve static files, and route API calls. The server supports both one-shot request/response patterns and live WebSocket subscriptions for real-time data.

Extension points are available at multiple levels. TypeScript handlers allow subclassing the base server or registering custom request handlers and routes. CTRL handlers enable the implementation of HTTP endpoints in the WinCC OA CTRL language. Additionally, custom static content can be served alongside the built-in Dashboard files.

Relationship to Older Components

webserver.js supersedes both the dashboard.ctl script and the HTTP Server as the backend for web-based user interfaces in WinCC OA. dashboard.ctl ran within the Control Manager using CTRL scripting. The HTTP Server provided a separate web serving add-on. webserver.js unifies these capabilities in a single Node.js-based backend with TypeScript support and standard web frameworks.

Both the HTTP Server and dashboard.ctl remain available for existing deployments. For new projects, webserver.js is the recommended replacement for dashboard.ctl as the Dashboard backend. The CTRL manager running webclient_http.ctl is still required for ULC UX and other web client functionality not covered by webserver.js. For information on migrating existing setups, see Migration from older components.