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.
