EuroScope Plugin · WebSocket API
EuroScope Data Bridge
A plugin DLL for the EuroScope ATC simulator: it starts a local WebSocket server and exposes live radar, flight plan and controller data as JSON — with subscription-based push and on-demand query/modification.
01 · About
What is Data Bridge?
EuroScope Data Bridge is a plugin DLL that runs inside EuroScope. Once loaded it automatically starts a WebSocket server on the local 127.0.0.1:48521. External programs (web pages, scripts, data-analysis tools) can subscribe to events such as runway activity changes, radar position updates and flight plan changes, or actively query and modify EuroScope data. All communication uses JSON text — a simple protocol with no third-party runtime dependencies.
127.0.0.1 (loopback only)02 · Architecture
Architecture
The plugin runs as a DLL inside the EuroScope process: it collects data through EuroScope SDK callbacks and pushes it to external clients through the built-in WebSocket server.
EuroScope (main thread)
DataBridgePlugin
ES Callbacks · Per-request workers
FullSnapshot
External clients
Web pages / scripts / data tools
JSON Push Events
Request / Response
- Push mode (subscription-based) — EuroScope callback events are automatically serialized to JSON. A client must first
subscribeto the event types it is interested in; only subscribed clients receive the matching events. When no client has subscribed to an event type, its callback is skipped entirely (no serialization, no push). - Pull / Request mode — clients send JSON requests (e.g.
get_flightplans,get_full_snapshot); each request runs on its own async worker thread and the result is returned over WebSocket as soon as it is ready. - Heartbeat (optional) — clients may send
pingand the server repliespongimmediately; not enforced, combines with thetimerevent for liveness detection. - Timed events — a
timerevent (with a tick counter) fires once per second, likewise only pushed to clients that subscribed to it — handy for polling or heartbeat detection.
03 · Features
Key features
Subscription push
13 real-time event types — radar updates, flight plan changes, controller logins, chat, METAR and more — delivered precisely per client subscription.
Request / response
55 requests and actions: snapshot queries, squawk and altitude changes, handoff coordination, voice channel toggles — responses matched by id.
Timed heartbeat
A once-per-second timer event provides a steady beat for polling and heartbeat detection.
Robust & reliable
Each request runs on its own async worker thread; the backpressure guard handles load spikes, with automatic cleanup on disconnect.
04 · Tech stack
Tech stack
| Component | Description |
|---|---|
| C++17 | DLL compilation standard |
| Visual Studio 2022 (v143) | Toolset |
| Win32 (x86) | Target platform (EuroScope is a 32-bit process) |
| websocketpp | WebSocket server (header-only, bundled) |
| nlohmann/json | JSON serialization / deserialization |
| vcpkg | C++ package manager |
| .NET 8 / WPF | Bundled test client (TestProject) |
05 · Quick start
Quick start
Copy EuroscopeDataBridge.dll to the EuroScope plugin directory, or add the DLL path in EuroScope's plugin settings.
Start EuroScope — once loaded, the plugin automatically starts the WebSocket server at ws://127.0.0.1:48521.
Connect to the WebSocket, subscribe to the event types you want, then send query or modification requests.
Verify without writing code: the repository bundles a WPF test client at tests/EuroScopeDataBridge.TestProject.
const ws = new WebSocket('ws://127.0.0.1:48521');
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
console.log(msg.type, msg.data);
};
ws.onopen = () => {
// Subscribe to events: pushes are only delivered for subscribed types
ws.send(JSON.stringify({
type: 'subscribe', id: 'sub-1',
data: { events: ['radar_update', 'flightplan_update', 'timer'] }
}));
// Query all flight plans
ws.send(JSON.stringify({ type: 'get_flightplans', id: 'req-1' }));
};
06 · Docs
Full documentation
API Documentation · Wiki
Covers the connection, message formats, all 13 push events and 55 requests, the data structure reference, error handling and configuration constants — with complete request/response examples.
07 · Download
Download
Latest Release · latest
Get the prebuilt EuroscopeDataBridge.dll (Win32) from GitHub Releases. The version shown is taken automatically from the latest release; copy the DLL into the EuroScope plugin directory to install.