mirror of
https://github.com/Sani7/remote-ui.git
synced 2026-10-27 06:01:14 +01:00
websocket
add ping pong to simbase, mainwindow and websocket wrapper
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user