diff --git a/app/app.pri b/app/app.pri index 007ea3671b589a5f7d6bb913cc28d0bb02a12c24..21388a6a3eab19e9f25988883e0f9348f2d16a11 100644 --- a/app/app.pri +++ b/app/app.pri @@ -1,10 +1,12 @@ QT += \ core \ - network + network \ + websockets QT -= gui HEADERS += \ + $${PWD}/src/websockets/websocketserver.h \ $${PWD}/src/handlers/confighandler.h \ $${PWD}/src/handlers/systemhandler.h \ $${PWD}/src/handlers/ocshandler.h \ @@ -12,6 +14,7 @@ HEADERS += \ SOURCES += \ $${PWD}/src/main.cpp \ + $${PWD}/src/websockets/websocketserver.cpp \ $${PWD}/src/handlers/confighandler.cpp \ $${PWD}/src/handlers/systemhandler.cpp \ $${PWD}/src/handlers/ocshandler.cpp \ diff --git a/app/src/main.cpp b/app/src/main.cpp index 23fe103dec3d427b52043d5265b2ff7f5a2e50c3..9bab403a30620dd99a260f3a9809f4a7d0922d17 100644 --- a/app/src/main.cpp +++ b/app/src/main.cpp @@ -8,13 +8,14 @@ #include "handlers/systemhandler.h" #include "handlers/ocshandler.h" #include "handlers/itemhandler.h" +#include "websockets/websocketserver.h" int main(int argc, char *argv[]) { // Init QCoreApplication app(argc, argv); - ConfigHandler *configHandler = new ConfigHandler(); + ConfigHandler *configHandler = new ConfigHandler(&app); QJsonObject appConfigApplication = configHandler->getAppConfigApplication(); app.setApplicationName(appConfigApplication["name"].toString()); @@ -35,5 +36,9 @@ int main(int argc, char *argv[]) clParser.addVersionOption(); clParser.process(app); + // Setup websocket server + WebSocketServer *webSocketServer = new WebSocketServer(appConfigApplication["id"].toString(), 443, &app); + webSocketServer->start(); + return app.exec(); } diff --git a/app/src/websockets/websocketserver.cpp b/app/src/websockets/websocketserver.cpp new file mode 100644 index 0000000000000000000000000000000000000000..37e67c6e70ade5ff8c01b49aadb68f7dd5ea1fd0 --- /dev/null +++ b/app/src/websockets/websocketserver.cpp @@ -0,0 +1,25 @@ +#include "websocketserver.h" + +#include <QHostAddress> +#include <QWebSocketServer> + +WebSocketServer::WebSocketServer(const QString &serverName, quint16 serverPort, QObject *parent) + : QObject(parent), serverName_(serverName), serverPort_(serverPort) +{ + webSocketServer_ = new QWebSocketServer(serverName_, QWebSocketServer::NonSecureMode, this); +} + +WebSocketServer::~WebSocketServer() +{ + webSocketServer_->deleteLater(); +} + +bool WebSocketServer::start() +{ + return webSocketServer_->listen(QHostAddress::Any, serverPort_); +} + +void WebSocketServer::stop() +{ + webSocketServer_->close(); +} diff --git a/app/src/websockets/websocketserver.h b/app/src/websockets/websocketserver.h new file mode 100644 index 0000000000000000000000000000000000000000..115e4f5b012beaef2b270baae86db9d2e292d110 --- /dev/null +++ b/app/src/websockets/websocketserver.h @@ -0,0 +1,23 @@ +#pragma once + +#include <QObject> + +class QWebSocketServer; + +class WebSocketServer : public QObject +{ + Q_OBJECT + +public: + explicit WebSocketServer(const QString &serverName, quint16 serverPort = 0, QObject *parent = 0); + ~WebSocketServer(); + +public slots: + bool start(); + void stop(); + +private: + QString serverName_; + quint16 serverPort_; + QWebSocketServer *webSocketServer_; +};