修复Web服务内存泄露、数据竞争与页面显示bug,适配x86编译

- 修复WebSocket推送无背压导致mongoose发送缓冲无限增长的内存泄露
- 为SystemData增加互斥锁,消除pushSystemData与主线程的数据竞争
- 修复网页状态文本判断反转、漏水告警阈值、FC状态、H2单位等显示bug
- 按协议修正电池紧急状态枚举解码(0x3A-0x3D为1-4级报警)
- 调整CMake适配系统安装的MOOS/IvP及jsoncpp,删除ARM专用build_debug.sh
This commit is contained in:
zjk
2026-08-12 23:17:36 +08:00
parent 7b0d0ff34b
commit ea06a415a1
11 changed files with 76 additions and 124 deletions
+9 -1
View File
@@ -352,7 +352,9 @@ void HttpServer::pushSystemData() {
LOG_F(ERROR, "System data pointer is null");
return;
}
std::lock_guard<std::mutex> dataLock(m_systemData->m_dataMutex);
// 序列化系统数据为JSON
json j;
@@ -790,6 +792,9 @@ void HttpServer::pushSystemData() {
// 发送给所有WebSocket客户端
std::lock_guard<std::mutex> lock(ws_connections_mutex_);
for (auto c : ws_connections_) {
if (c->send.len > MAX_WS_BACKLOG) {
continue;
}
mg_ws_send(c, msg.c_str(), msg.size(), WEBSOCKET_OP_TEXT);
}
}
@@ -1057,6 +1062,9 @@ void HttpServer::monitorLogFile() {
std::lock_guard<std::mutex> lock(ws_connections_mutex_);
for (auto c : ws_connections_) {
if (c->send.len > MAX_WS_BACKLOG) {
continue;
}
mg_ws_send(c, msg.c_str(), msg.size(), WEBSOCKET_OP_TEXT);
}
}