EuroScope Plugin · WebSocket API
EuroScope Data Bridge
面向 EuroScope 模拟管制系统的插件 DLL:在本地启动 WebSocket 服务,将雷达、飞行计划、管制员等实时数据以 JSON 形式对外暴露,支持订阅推送与主动查询、修改。
01 · 简介
什么是 Data Bridge?
EuroScope Data Bridge 是一个运行在 EuroScope 内部的插件 DLL。插件加载后自动在本机 127.0.0.1:48521 上启动 WebSocket 服务,外部程序(网页、脚本、数据分析工具)可以订阅跑道活动变化、雷达位置更新、飞行计划变更等事件,也可以主动查询和修改 EuroScope 数据。所有通信均使用 JSON 文本,协议简单、无任何第三方依赖。
127.0.0.1 本机回环地址02 · 架构
架构
插件以 DLL 形式运行于 EuroScope 进程内部,通过 EuroScope SDK 回调采集数据,再经内置 WebSocket 服务推送给外部客户端。
EuroScope(主线程)
DataBridgePlugin
ES 回调 · 每请求工作线程
FullSnapshot
外部客户端
网页 / 脚本 / 数据分析工具
JSON Push Events
Request / Response
- Push(订阅推送) — EuroScope 回调事件自动序列化为 JSON。客户端需先
subscribe订阅感兴趣的事件类型,此后仅订阅的客户端会收到对应事件;没有任何客户端订阅某事件时,该事件的回调会被完全跳过(零序列化、零推送)。 - Pull / Request(拉 / 请求模式) — 客户端发送 JSON 请求(如
get_flightplans、get_full_snapshot),每个请求在独立的异步工作线程中处理,响应就绪后即时通过 WebSocket 返回。 - 心跳(可选) — 客户端可发送
ping,服务端立即回复pong;不强制,可配合timer事件做连接健康检测。 - 定时事件 —
timer事件(含 tick 计数器)每秒触发一次,同样仅在客户端订阅后推送,便于定时轮询或心跳检测。
03 · 特性
核心特性
订阅式推送
13 类实时事件:雷达更新、飞行计划变更、管制员上下线、聊天、METAR 等,按客户端订阅精确推送。
请求 / 响应
55 种请求与操作:查询快照、修改应答机与高度、移交协调、语音频道切换,响应按 id 一一对应。
定时心跳
每秒一次的 timer 事件,为轮询与心跳检测提供稳定的节拍。
稳健可靠
每请求独立异步线程、IO 线程零阻塞;背压保护应对高负载,连接异常自动清理。
04 · 技术栈
技术栈
| 组件 | 说明 |
|---|---|
| C++17 | DLL 编译标准 |
| Visual Studio 2022 (v143) | 工具集 |
| Win32 (x86) | 目标平台(EuroScope 为 32 位进程) |
| websocketpp | WebSocket 服务端(header-only,随仓库内置) |
| nlohmann/json | JSON 序列化 / 反序列化 |
| vcpkg | C++ 包管理 |
| .NET 8 / WPF | 随附测试客户端(TestProject) |
05 · 快速开始
快速开始
将 EuroscopeDataBridge.dll 复制到 EuroScope 插件目录,或在 EuroScope 插件设置中添加该 DLL 路径。
启动 EuroScope,插件加载后自动在本机 ws://127.0.0.1:48521 启动 WebSocket 服务。
连接 WebSocket,先订阅感兴趣的事件类型,再发送查询或修改请求。
无需编写代码即可验证:仓库附带 WPF 测试客户端 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 = () => {
// 订阅事件:订阅后才会收到对应类型的推送
ws.send(JSON.stringify({
type: 'subscribe', id: 'sub-1',
data: { events: ['radar_update', 'flightplan_update', 'timer'] }
}));
// 查询所有飞行计划
ws.send(JSON.stringify({ type: 'get_flightplans', id: 'req-1' }));
};
06 · 文档
完整使用文档
API 文档 · Wiki
覆盖连接方式、消息格式、全部 13 种推送事件与 55 种请求、数据结构参考、错误处理与配置常量,并附有完整请求 / 响应示例。
07 · 下载
下载
Latest Release · latest
从 GitHub Releases 获取预编译的 EuroscopeDataBridge.dll(Win32)。版本号自动取自最新 Release,下载后将其复制到 EuroScope 插件目录即可使用。