-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebsocket_manager.cpp
52 lines (39 loc) · 1.6 KB
/
websocket_manager.cpp
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
50
51
52
#include "websocket_manager.h"
WebSocket_Manager::WebSocket_Manager(QObject *parent)
: QObject{parent}
{
QString key = "by7wJZ30NwQMCAlEtrBDvNCFQpx5yZFBHfHMoncLpQxwvMEZhihshZcebHldfyN7";
QString secret = "Ha4ao8jGxCI4cRHfBsq0vndDfOW8LxIE8UsYXtN9DRjBKw8SoPshWds4PhUb7Vnp";
// В главном классе
QThread* wsThread = new QThread(this);
WebSocker_Worker* worker = new WebSocker_Worker(key, secret);
worker->moveToThread(wsThread);
// Подключение сигналов и слотов
connect(wsThread, &QThread::started, worker, &WebSocker_Worker::start);
connect(wsThread, &QThread::finished, worker, &WebSocker_Worker::deleteLater);
connect(worker, &WebSocker_Worker::messageReceived, this, &WebSocket_Manager::handleMessage);
connect(worker, &WebSocker_Worker::error, this, &WebSocket_Manager::handleError);
// Запуск потока
wsThread->start();
}
void WebSocket_Manager::handleMessage(const QString &message)
{
// qDebug() << "Message: " << message;
QByteArray dataMessage = message.toUtf8();
QJsonParseError parser;
QJsonDocument jdoc = QJsonDocument::fromJson(dataMessage, &parser);
if (parser.error != QJsonParseError::NoError) {
qDebug() << "Error parse message: " << parser.errorString();
return;
}
if (!jdoc.isObject()){
qDebug() << "Message is no json ";
}
QJsonObject jobj = jdoc.object();
double price = jobj["p"].toString().toDouble();
emit updateBTC(price);
}
void WebSocket_Manager::handleError(const QString &error)
{
qDebug() << "Error: " << error;
}