mirror of
https://github.com/Sani7/remote-ui.git
synced 2026-10-26 21:51:13 +01:00
client web socket wrapper
cleanup
This commit is contained in:
@@ -15,9 +15,23 @@ Web_socket_wrapper::Web_socket_wrapper(const QUrl &url, QObject *parent)
|
|||||||
: QObject(parent), m_web_socket(new QWebSocket("", QWebSocketProtocol::VersionLatest, this)),
|
: QObject(parent), m_web_socket(new QWebSocket("", QWebSocketProtocol::VersionLatest, this)),
|
||||||
m_ping_timer(new QTimer(this)), m_pong_timer(new QTimer(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::connected, this, [=, this] {
|
||||||
connect(m_web_socket, &QWebSocket::disconnected, this, &Web_socket_wrapper::on_closed);
|
m_connected = true;
|
||||||
connect(m_web_socket, &QWebSocket::pong, this, &Web_socket_wrapper::m_on_pong);
|
connect(m_web_socket, &QWebSocket::textMessageReceived, this, &Web_socket_wrapper::m_on_received);
|
||||||
|
m_ping_timer->start(5000);
|
||||||
|
emit on_connected();
|
||||||
|
});
|
||||||
|
connect(m_web_socket, &QWebSocket::disconnected, this, [=, this] { emit on_closed(); });
|
||||||
|
connect(m_web_socket, &QWebSocket::pong, this, [=, this](quint64 elapsedTime) {
|
||||||
|
if (elapsedTime > 1000)
|
||||||
|
{
|
||||||
|
m_web_socket->close();
|
||||||
|
emit on_closed();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pong_timer->stop();
|
||||||
|
m_ping_timer->start(1000);
|
||||||
|
});
|
||||||
connect(m_web_socket, &QWebSocket::errorOccurred, this, [this](QAbstractSocket::SocketError error) {
|
connect(m_web_socket, &QWebSocket::errorOccurred, this, [this](QAbstractSocket::SocketError error) {
|
||||||
LOG_ERROR(QString::fromStdString(std::string(magic_enum::enum_name(error))));
|
LOG_ERROR(QString::fromStdString(std::string(magic_enum::enum_name(error))));
|
||||||
});
|
});
|
||||||
@@ -25,7 +39,11 @@ Web_socket_wrapper::Web_socket_wrapper(const QUrl &url, QObject *parent)
|
|||||||
m_web_socket->ping();
|
m_web_socket->ping();
|
||||||
m_pong_timer->start(1000);
|
m_pong_timer->start(1000);
|
||||||
});
|
});
|
||||||
connect(m_pong_timer, &QTimer::timeout, this, &Web_socket_wrapper::m_on_pong_timeout);
|
connect(m_pong_timer, &QTimer::timeout, this, [=, this] {
|
||||||
|
LOG_CRITICAL("Pong timeout");
|
||||||
|
m_web_socket->close();
|
||||||
|
emit on_closed();
|
||||||
|
});
|
||||||
m_ping_timer->setSingleShot(true);
|
m_ping_timer->setSingleShot(true);
|
||||||
m_pong_timer->setSingleShot(true);
|
m_pong_timer->setSingleShot(true);
|
||||||
m_web_socket->setProxy(QNetworkProxy::NoProxy);
|
m_web_socket->setProxy(QNetworkProxy::NoProxy);
|
||||||
@@ -163,22 +181,6 @@ void Web_socket_wrapper::send_event(Event e, size_t id, uint32_t sid, uint8_t dl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Web_socket_wrapper::close()
|
|
||||||
{
|
|
||||||
if (m_connected)
|
|
||||||
m_web_socket->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
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(5000);
|
|
||||||
|
|
||||||
emit on_connected();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Web_socket_wrapper::m_on_received(QString message)
|
void Web_socket_wrapper::m_on_received(QString message)
|
||||||
{
|
{
|
||||||
json j = json::parse(message.toStdString());
|
json j = json::parse(message.toStdString());
|
||||||
@@ -194,25 +196,6 @@ void Web_socket_wrapper::m_on_received(QString message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Web_socket_wrapper::m_on_pong(quint64 elapsedTime)
|
|
||||||
{
|
|
||||||
if (elapsedTime > 1000)
|
|
||||||
{
|
|
||||||
m_web_socket->close();
|
|
||||||
emit on_closed();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_pong_timer->stop();
|
|
||||||
m_ping_timer->start(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Web_socket_wrapper::m_on_pong_timeout()
|
|
||||||
{
|
|
||||||
LOG_CRITICAL("Pong timeout");
|
|
||||||
m_web_socket->close();
|
|
||||||
emit on_closed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Web_socket_wrapper::inhibit_events(bool inhibit)
|
void Web_socket_wrapper::inhibit_events(bool inhibit)
|
||||||
{
|
{
|
||||||
m_inhibit_events = inhibit;
|
m_inhibit_events = inhibit;
|
||||||
|
|||||||
@@ -128,11 +128,6 @@ class EXPORT Web_socket_wrapper : public QObject
|
|||||||
* @param payload The CAN data payload
|
* @param payload The CAN data payload
|
||||||
*/
|
*/
|
||||||
void send_event(Event e, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload);
|
void send_event(Event e, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload);
|
||||||
/**
|
|
||||||
* @brief Close the WebSocket connection
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void close();
|
|
||||||
/**
|
/**
|
||||||
* @brief Inhibit or allow sending events to the server
|
* @brief Inhibit or allow sending events to the server
|
||||||
*
|
*
|
||||||
@@ -167,27 +162,11 @@ class EXPORT Web_socket_wrapper : public QObject
|
|||||||
void log_signal(const char *filename_in, int line_in, const char *funcname_in, int level, QString msg);
|
void log_signal(const char *filename_in, int line_in, const char *funcname_in, int level, QString msg);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
/**
|
|
||||||
* @brief Internal slot for handling WebSocket connection established
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void m_on_connected();
|
|
||||||
/**
|
/**
|
||||||
* @brief Internal slot for handling WebSocket disconnection
|
* @brief Internal slot for handling WebSocket disconnection
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void m_on_received(QString message);
|
void m_on_received(QString message);
|
||||||
/**
|
|
||||||
* @brief Internal slot for handling pong responses
|
|
||||||
*
|
|
||||||
* @param elapsedTime The elapsed time since the ping was sent
|
|
||||||
*/
|
|
||||||
void m_on_pong(quint64 elapsedTime);
|
|
||||||
/**
|
|
||||||
* @brief Internal slot for handling pong timeouts
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void m_on_pong_timeout();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_connected = false;
|
bool m_connected = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user