QT websocket бесконечный цикл с задержкой
Пытаюсь написать первую программу на QT. Программа должна отображать текущий уровень громкости и коммуницировать с KODI через websoket. Я использовал пример simple echo. Вот что у меня есть на данный момент:
#include "websocket.h"
#include <QObject>
#include <QtCore/QDebug>
#include <QTimer>
QT_USE_NAMESPACE
kodiConnect::kodiConnect(const QUrl &url, QObject *parent) :
QObject(parent),
m_url(url)
{
qDebug() << "WebSocket server:" << url;
connect(&m_webSocket, &QWebSocket::connected, this, &kodiConnect::getPlayerID);
//connect(&m_webSocket, &QWebSocket::disconnected, this, &kodiConnect::closed);
m_webSocket.open(QUrl(url));
}
void kodiConnect::getPlayerID()
{
qDebug() << "WebSocket connected";
connect(&m_webSocket, &QWebSocket::textMessageReceived,this, &kodiConnect::parsePlayerId);
m_webSocket.sendTextMessage(QStringLiteral("{\"jsonrpc\":\"2.0\",\"method\":\"Player.GetActivePlayers\",\"id\":1}"));
}
void kodiConnect::parsePlayerId(QString message)
{
// Тут парсим JSON и создаем новый запрос.
qDebug() << "Message received:" << message;
}
Как мне повторять запрос бесконечно начиная с getPlayerID() с задержкой 200мс?
Пример, который я использовал
https://doc.qt.io/qt-5/qtwebsockets-echoclient-example.html
Ответы (1 шт):
Автор решения: Bearded Beaver
→ Ссылка
Например так:
auto timer = new QTimer(this); // создаем таймер
timer->setInterval(200); // задаем интервал, с которым будет срабатывать таймер
connect(timer, &QTimer::timeout, this, &kodiConnect::getPlayerID); // что вызывать по таймеру
timer->start(); // запускаем таймер
Только connect внутри функции getPlayerID вам надо вызвать один раз за все время. То есть вам нужна одна функция "установлено соединение с сокетом", где вы инициализируете и запускаете таймер, и вторая, которая срабатывает на каждый тик таймера