diff --git a/app/src/main.cpp b/app/src/main.cpp index acfa5fd551e4b60dac72f2a2b4173a7955b99c77..6d2aa87a511bbdea3e7b628d93db7140b12f1e0a 100644 --- a/app/src/main.cpp +++ b/app/src/main.cpp @@ -49,6 +49,8 @@ int main(int argc, char *argv[]) // Setup websocket server WebSocketServer *webSocketServer = new WebSocketServer(appConfigApplication["id"].toString(), port, &app); + QObject::connect(webSocketServer, &WebSocketServer::stopped, &app, &QCoreApplication::quit); + if (webSocketServer->start()) { qDebug() << "Websocket server started at:" << webSocketServer->serverUrl().toString(); } diff --git a/app/src/websockets/websocketserver.cpp b/app/src/websockets/websocketserver.cpp index b32317305bf6ca4680dd5f8befc95a05fabcd737..dc4d30871ae37f5adac05319cb7f2b48c21dfc9a 100644 --- a/app/src/websockets/websocketserver.cpp +++ b/app/src/websockets/websocketserver.cpp @@ -7,19 +7,22 @@ WebSocketServer::WebSocketServer(const QString &serverName, quint16 serverPort, : QObject(parent), serverName_(serverName), serverPort_(serverPort) { webSocketServer_ = new QWebSocketServer(serverName_, QWebSocketServer::NonSecureMode, this); + connect(webSocketServer_, &QWebSocketServer::closed, this, &WebSocketServer::stopped); } WebSocketServer::~WebSocketServer() { - if (webSocketServer_->isListening()) { - webSocketServer_->close(); - } + stop(); webSocketServer_->deleteLater(); } bool WebSocketServer::start() { - return webSocketServer_->listen(QHostAddress::Any, serverPort_); + if (webSocketServer_->listen(QHostAddress::Any, serverPort_)) { + emit started(); + return true; + } + return false; } void WebSocketServer::stop() diff --git a/app/src/websockets/websocketserver.h b/app/src/websockets/websocketserver.h index b381e6ee9342bd1cb739ab539b80fdc46d5d6c4f..d17dd502d84c94b446437f5cc3c7e7d8ee39b958 100644 --- a/app/src/websockets/websocketserver.h +++ b/app/src/websockets/websocketserver.h @@ -13,6 +13,10 @@ public: explicit WebSocketServer(const QString &serverName, quint16 serverPort = 0, QObject *parent = 0); ~WebSocketServer(); +signals: + void started(); + void stopped(); + public slots: bool start(); void stop();