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();