websocket

add ping pong to simbase, mainwindow and websocket wrapper
This commit is contained in:
2026-02-01 18:59:36 +01:00
parent e72ec3e01d
commit 34cdcd6078
4 changed files with 43 additions and 1 deletions
+33 -1
View File
@@ -3,10 +3,20 @@
Web_socket_wrapper::Web_socket_wrapper(const QUrl &url, QObject *parent) :
QObject(parent),
m_web_socket(new QWebSocket("", QWebSocketProtocol::VersionLatest, this))
m_web_socket(new QWebSocket("", QWebSocketProtocol::VersionLatest, this)),
m_ping_timer(new QTimer(this)),
m_pong_timer(new QTimer(this))
{
connect(m_web_socket, &QWebSocket::connected, this, &Web_socket_wrapper::m_on_connected);
connect(m_web_socket, &QWebSocket::disconnected, this, &Web_socket_wrapper::on_closed);
connect(m_web_socket, &QWebSocket::pong, this, &Web_socket_wrapper::m_on_pong);
connect(m_ping_timer, &QTimer::timeout, this, [=]{
m_web_socket->ping();
m_pong_timer->start(500);
});
connect(m_pong_timer, &QTimer::timeout, this, &Web_socket_wrapper::m_on_pong_timeout);
m_ping_timer->setSingleShot(true);
m_pong_timer->setSingleShot(true);
m_web_socket->open(url);
}
@@ -111,6 +121,9 @@ void Web_socket_wrapper::m_on_connected()
m_connected = true;
connect(m_web_socket, &QWebSocket::textMessageReceived,
this, &Web_socket_wrapper::m_on_received);
m_ping_timer->start(1000);
emit on_connected();
}
@@ -128,3 +141,22 @@ void Web_socket_wrapper::m_on_received(QString message)
return;
}
}
void Web_socket_wrapper::m_on_pong(quint64 elapsedTime)
{
if (elapsedTime > 500)
{
m_web_socket->close();
emit on_closed();
}
m_pong_timer->stop();
m_ping_timer->start(1000);
}
void Web_socket_wrapper::m_on_pong_timeout()
{
qDebug() << "Pong timeout";
m_web_socket->close();
emit on_closed();
}