STRHUB -- 实时数据流转发工具
STRHUB 是 RTKHUB 工具链中的实时数据流转发、接收与管理模块,基于 RTKLIB strsvr 构建。它提供多任务流转发能力,支持配置文件批量启动与运行时动态增删改查,并通过独立的 Web 管理页面提供吞吐量监控和任务管理界面。
核心特性
- 配置批量启动 -- 通过
strhub.conf配置文件一次性加载所有流任务 - 动态增删改查 -- 运行时通过 Web 页面或控制台命令动态添加、启动、停止、删除任务
- 独立 Web 管理页面 -- 浏览器监控页面,支持吞吐量图表和结构化任务创建
- 凭证脱敏显示 -- NTRIP 用户名/密码在界面上脱敏显示,不直接暴露
STRHUB 已内置在 RTKHUB 中。使用 RTKHUB 时,STRHUB 作为 RTKHUB 的一部分提供数据流转发能力。
启动参数
.\strhub.exe -k strhub.conf -log 3
| 参数 | 说明 |
|---|---|
-k <file> | 流任务配置文件路径(默认 strhub.conf) |
-log <lvl> | RTKLIB 跟踪级别 |
配置文件 strhub.conf 中定义了所有需要批量启动的流任务。启动时 STRHUB 会读取该文件并自动创建所有任务。
控制台命令
STRHUB 提供交互式控制台,支持以下命令:
| 命令 | 说明 |
|---|---|
list | 列出所有任务 |
list run | 列出运行中的任务 |
list stop | 列出已停止的任务 |
monitor | 监控所有任务状态 |
monitor <id> | 监控指定任务的详细信息 |
add <args> | 添加新任务(使用 str2str 参数格式) |
stop <id> | 停止指定任务 |
start <id> | 启动指定任务 |
del <id> / rm <id> | 删除指定任务 |
save | 保存当前配置到文件 |
quit / exit | 退出控制台 |
任务参数格式
add 命令使用与 RTKLIB str2str 相同的参数格式:
-in <输入参数> -out <输出参数>
NTRIP 客户端示例:
-add -in ntrip://user:password@host:2101/MOUNT -out file://./data.rtcm
CLI 保持 add <args> 这种通用 str2str 参数形式。如果需要按类型填写 NTRIP/TCP/UDP/File/Serial 等参数,建议使用 Web 管理页的"新增任务"弹窗,它会自动生成等效的 -in ... -out ... 参数。
Web 管理页面
访问地址: http://127.0.0.1:5427/
STRHUB Web 管理页面提供结构化的任务管理功能:
- 支持选择输入/输出类型:NTRIP Client、NTRIP Server、NTRIP Caster、TCP Client/Server、UDP Client/Server、Serial、File、FTP、HTTP 等
- 页面自动生成底层
-in ... -out ...参数 - NTRIP Client 支持从 caster sourcetable 获取挂载点列表
- 吞吐量图表实时展示数据流量
API 端点
基础地址: http://127.0.0.1:5427/
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /api/status | 查询所有任务状态 |
| GET | /api/add?cmd=<args> | 添加新任务 |
| GET | /api/start?id=<id> | 启动任务 |
| GET | /api/stop?id=<id> | 停止任务 |
| GET | /api/del?id=<id> | 删除任务 |
| GET | /api/save | 保存当前配置到文件 |
| GET | /api/ntrip/mountpoints?host=<host>&port=2101&user=<user>&password=<password> | 从 NTRIP caster sourcetable 获取挂载点列表 |
API 使用示例
查询所有任务状态:
const response = await fetch("http://127.0.0.1:5427/api/status");
const tasks = await response.json();
console.log(tasks);
添加 NTRIP 客户端任务:
const args = encodeURIComponent("-in ntrip://user:pass@host:2101/MOUNT -out file://./data.rtcm");
const response = await fetch(`http://127.0.0.1:5427/api/add?cmd=${args}`);
获取 NTRIP 挂载点列表:
const response = await fetch(
"http://127.0.0.1:5427/api/ntrip/mountpoints?host=caster.example.com&port=2101&user=admin&password=secret"
);
const mountpoints = await response.json();
凭证脱敏
STRHUB 对 NTRIP 用户名和密码实施脱敏处理:
- 在 Web 管理页面的任务列表中,NTRIP 凭证以脱敏形式显示,不直接暴露原始值
- API 返回的任务状态中,敏感字段同样经过脱敏处理
- 控制台和保存前的任务展示也会使用脱敏后的 stream path
- 编辑任务时需要重新填写凭证
凭证脱敏不等于密钥管理。strhub.conf 等配置文件仍可能保存真实 NTRIP 凭证,部署时请确保通过 HTTPS、内网、VPN 或 Cloudflare Tunnel 访问 STRHUB 管理接口,并限制配置文件访问权限。
与 RTKHUB 的关系
RTKHUB 负责 GNSS/RTK 解算与控制台监控;STRHUB 负责数据流接入、转发、接收和链路管理。当前版本中,STRHUB 以内置模块形式服务于 RTKHUB,但保留独立的 Web 管理页面(端口 5427)和 API 接口。