-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathclient.cpp
More file actions
49 lines (40 loc) · 1.33 KB
/
client.cpp
File metadata and controls
49 lines (40 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "client.h"
#include <QtCore/QDebug>
QT_USE_NAMESPACE
Client::Client(const QUrl &url, QObject *parent) :
QObject(parent),
m_url(url),
m_timerConnect(new QTimer(this))
{
connect(&m_webSocket, &QWebSocket::connected, this, &Client::onConnected);
connect(&m_webSocket, &QWebSocket::disconnected, this, &Client::closedConnect);
connect(&m_webSocket, &QWebSocket::stateChanged, this, &Client::stateCheck);
connect(m_timerConnect, SIGNAL(timeout()), this, SLOT(tryConnect()));
m_webSocket.open(m_url);
m_timerConnect->setInterval(30);
}
void Client::onConnected()
{
connect(&m_webSocket, &QWebSocket::textMessageReceived,
this, &Client::onTextMessageReceived);
}
void Client::closedConnect() {
m_webSocket.close();
}
void Client::tryConnect() {
m_webSocket.close();
m_webSocket.open(m_url);
}
void Client::stateCheck(QAbstractSocket::SocketState state) {
if (state == QAbstractSocket::UnconnectedState) m_timerConnect->start();
if (state == QAbstractSocket::ConnectedState) m_timerConnect->stop();
}
void Client::onTextMessageReceived(QString message)
{
QJsonDocument doc = QJsonDocument::fromJson(message.toUtf8());
QJsonObject object = doc.object();
emit recieveReady(object);
}
void Client::sendText(QString message) {
m_webSocket.sendTextMessage(message);
}