--- a/src/MainWindow.cpp Sun Mar 27 22:03:18 2022 +0200 +++ b/src/MainWindow.cpp Mon Mar 28 16:54:08 2022 +0200 @@ -42,6 +42,7 @@ #include <QtWidgets/QTableWidget> #include <QtWidgets/QGroupBox> #include <QtWidgets/QPushButton> +#include <QUrl> MainWindow::MainWindow(bool useDevelopOption, bool startConfigOption, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) @@ -53,6 +54,8 @@ readsettings(); db = new DataBase(); db->openDataBase(useDevelopOption); + + openWS(useDevelopOption); } @@ -61,11 +64,54 @@ qDebug() << Q_FUNC_INFO; writesettings(); + webSocket->close(QWebSocketProtocol::CloseCodeNormal, ""); db->closeDataBase(); delete ui; } + +bool MainWindow::openWS(bool develop) +{ + QString server; + if (develop) + server = wsDev.host; + else + server = wsProd.host; + QUrl url(QString("ws://%1/ws").arg(server)); + qDebug() << "Open websocket:" << url; + + webSocket = new QWebSocket; + QObject::connect(webSocket, &QWebSocket::connected, this, &MainWindow::wsConnected); + QObject::connect(webSocket, &QWebSocket::disconnected, this, &MainWindow::wsClosed); + + webSocket->open(QUrl(url)); + return true; +} + + +void MainWindow::wsConnected() +{ + qDebug() << Q_FUNC_INFO; + + connect(webSocket, &QWebSocket::textMessageReceived, this, &MainWindow::wsTextMessageReceived); +} + + +void MainWindow::wsClosed() +{ + qDebug() << Q_FUNC_INFO << webSocket->closeReason(); + + // Should triger a periodic timer to try to reconnect. +} + + +void MainWindow::wsTextMessageReceived(QString message) +{ +// qDebug() << "WS received:" << message; +} + + void MainWindow::readsettings() { QSettings settings(QSettings::IniFormat, QSettings::UserScope, "mbse", "bmsapp"); @@ -120,43 +166,23 @@ settings.endGroup(); qDebug() << "MySQL dev" << dbDev.host << dbDev.port << dbDev.name << dbDev.pass; - settings.beginGroup("mqttprod"); - mqttProd.host = settings.value("host").toString(); - if (mqttProd.host.isEmpty()) { - mqttProd.host = "localhost"; - mqttProd.port = "1883"; - mqttProd.user = "nobody"; - mqttProd.pass = "secret"; - settings.setValue("host", mqttProd.host); - settings.setValue("port", mqttProd.port); - settings.setValue("user", mqttProd.user); - settings.setValue("pass", mqttProd.pass); - } else { - mqttProd.port = settings.value("port").toString(); - mqttProd.user = settings.value("user").toString(); - mqttProd.pass = settings.value("pass").toString(); + settings.beginGroup("wsprod"); + wsProd.host = settings.value("host").toString(); + if (wsProd.host.isEmpty()) { + wsProd.host = "localhost"; + settings.setValue("host", wsProd.host); } settings.endGroup(); - qDebug() << "MQTT prod" << mqttProd.host << mqttProd.port << mqttProd.user << mqttProd.pass; + qDebug() << "WS prod" << wsProd.host; - settings.beginGroup("mqttdev"); - mqttDev.host = settings.value("host").toString(); - if (mqttDev.host.isEmpty()) { - mqttDev.host = "localhost"; - mqttDev.port = "1883"; - mqttDev.user = "nobody"; - mqttDev.pass = "secret"; - settings.setValue("host", mqttDev.host); - settings.setValue("port", mqttDev.port); - settings.setValue("user", mqttDev.user); - settings.setValue("pass", mqttDev.pass); - } else { - mqttDev.port = settings.value("port").toString(); - mqttDev.user = settings.value("user").toString(); - mqttDev.pass = settings.value("pass").toString(); + settings.beginGroup("wsdev"); + wsDev.host = settings.value("host").toString(); + if (wsDev.host.isEmpty()) { + wsDev.host = "localhost"; + settings.setValue("host", wsDev.host); } settings.endGroup(); - qDebug() << "MQTT dev" << mqttDev.host << mqttDev.port << mqttDev.user << mqttDev.pass; + qDebug() << "WS dev" << wsDev.host; } @@ -182,18 +208,12 @@ settings.setValue("charset", dbDev.charset); settings.endGroup(); - settings.beginGroup("mqttprod"); - settings.setValue("host", mqttProd.host); - settings.setValue("port", mqttProd.port); - settings.setValue("user", mqttProd.user); - settings.setValue("pass", mqttProd.pass); + settings.beginGroup("wsprod"); + settings.setValue("host", wsProd.host); settings.endGroup(); - settings.beginGroup("mqttdev"); - settings.setValue("host", mqttDev.host); - settings.setValue("port", mqttDev.port); - settings.setValue("user", mqttDev.user); - settings.setValue("pass", mqttDev.pass); + settings.beginGroup("wsdev"); + settings.setValue("host", wsDev.host); settings.endGroup(); qDebug() << "writesettings() done.";