src/MainWindow.cpp

changeset 91
409d9c7214be
parent 90
2396457a8167
child 103
6da4e93b6ceb
--- 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.";

mercurial