refactor:调整websocket重连逻辑

This commit is contained in:
duanshengchao 2026-01-29 20:19:00 +08:00
parent 5814b2babe
commit a3ddfb95b9
3 changed files with 14 additions and 7 deletions

View File

@ -1,7 +1,7 @@
[RealtimeData]
host=192.168.46.100
port=10080
httpPath=monitors/data/subscriptions
httpPath=/monitors/data/subscriptions
websocketPath=monitors/data/realtime/stream
[HistoricalData]

View File

@ -73,7 +73,10 @@ void MeasurementDataManager::buildSubscriptionRequest(const QString& action, con
url.setPort(m_serviceConfig.realtimeCfg.port);
url.setPath(m_serviceConfig.realtimeCfg.httpPath);
if(!url.isValid())
{
LOG_ERROR("Http-MeasurementData", QString("url:'%1' is not valid"));
return ;
}
//创建网络请求
QNetworkRequest request(url);
@ -296,11 +299,12 @@ void MeasurementDataManager::getSubscriptionRealtimeData()
, m_serviceConfig.realtimeCfg.websocketPath
, m_clientID);
QUrl url(strUrl);
if(!m_webSocketClient->connectToServer(url))
{
QString errorMsg = QString("Connect to WebSocketServer failed");
LOG_ERROR("WebSocket-MeasurementData", errorMsg);
}
m_webSocketClient->connectToServer(url);
// if(!m_webSocketClient->connectToServer(url))
// {
// QString errorMsg = QString("Connect to WebSocketServer failed");
// LOG_ERROR("WebSocket-MeasurementData", errorMsg);
// }
}
void MeasurementDataManager::requestData(const QStringList& measurements, QObject* requester)

View File

@ -153,7 +153,8 @@ void WebSocketClient::cleanupWebSocket()
void WebSocketClient::scheduleReconnect()
{
if(m_connectionStatus == ConnectionStatus::Disconnected || m_connectionStatus == ConnectionStatus::Error)
if(m_connectionStatus == ConnectionStatus::Connected || m_connectionStatus == ConnectionStatus::Connecting
|| m_connectionStatus == ConnectionStatus::Reconncting)
return;
if(m_reconnectAttempts < m_maxReconnectAttempts)
@ -195,6 +196,8 @@ void WebSocketClient::onDisconnected()
void WebSocketClient::onError(QAbstractSocket::SocketError error)
{
m_connected = false;
m_connectionStatus = ConnectionStatus::Error;
QString errorMsg = m_webSocket ? m_webSocket->errorString() : "Unknown WebSocket error";
LOG_ERROR("WebSocket", errorMsg);
scheduleReconnect();