Implemented qt port + e2e

This commit is contained in:
Martino Ferrari
2026-06-26 09:11:10 +02:00
parent 0d7d8f396b
commit 4702d0a217
146 changed files with 57272 additions and 128 deletions
+57
View File
@@ -0,0 +1,57 @@
/**
* @file WsClient.h
* @brief Thin QWebSocket wrapper with auto-reconnect.
*/
#pragma once
#include <QObject>
#include <QString>
#include <QByteArray>
#include <QWebSocket>
#include <QTimer>
#include <cstdint>
namespace shq {
class WsClient : public QObject {
Q_OBJECT
public:
explicit WsClient(QObject* parent = nullptr);
/** (Re)connect to host:port; starts the auto-reconnect loop. */
void connectTo(const QString& host, uint16_t port);
/** Switch target and reconnect immediately. */
void reconnectTo(const QString& host, uint16_t port);
void close();
bool isConnected() const { return connected_; }
QString host() const { return host_; }
uint16_t port() const { return port_; }
public Q_SLOTS:
void sendText(const QString& json);
void sendText(const std::string& json) { sendText(QString::fromStdString(json)); }
Q_SIGNALS:
void connectedChanged(bool connected);
void textReceived(const QString& json);
void binaryReceived(const QByteArray& data);
private Q_SLOTS:
void onConnected();
void onDisconnected();
void onTick();
private:
void openSocket();
QWebSocket socket_;
QTimer reconnectTimer_;
QString host_;
uint16_t port_ = 0;
bool connected_ = false;
bool wantOpen_ = false;
};
} /* namespace shq */