Implemented qt port + e2e
This commit is contained in:
@@ -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 */
|
||||
Reference in New Issue
Block a user