#include "Server.hpp" Server::Server(quint16 port, QObject *parent) : QObject(parent), m_pWebSocketServer(new QWebSocketServer( QStringLiteral("Server"), QWebSocketServer::NonSecureMode, this)), m_client(nullptr) { if(m_pWebSocketServer->listen(QHostAddress::Any, port)) { qDebug() << "Server listening on port: " << port; connect(m_pWebSocketServer, &QWebSocketServer::newConnection, this, &Server::onNewConnection); connect(m_pWebSocketServer, &QWebSocketServer::closed, this, &Server::closed); } } Server::~Server() { m_pWebSocketServer->close(); delete m_client; } void Server::onNewConnection() { if(m_client) { qDebug() << "one connection only!"; return; } QWebSocket * websocket = m_pWebSocketServer->nextPendingConnection(); QHostAddress addr = websocket->localAddress(); qDebug() << "New connection from IP:" << (addr.toString() + ":" + QString::number(websocket->localPort())); connect(websocket, &QWebSocket::textMessageReceived, this, &Server::processTextMessage); connect(websocket, &QWebSocket::binaryMessageReceived, this, &Server::processBinaryMessage); connect(websocket, &QWebSocket::disconnected, this, &Server::socketDisconnected); m_client = websocket; } void Server::processTextMessage(QString message) { QWebSocket * pClient = qobject_cast(sender()); if(pClient) { qDebug() << "Get Text Message: " << message; } } void Server::processBinaryMessage(QByteArray message) { QWebSocket * pClient = qobject_cast(sender()); if(pClient) { qDebug() << "Get Text Message: " << message; } } void Server::socketDisconnected() { QWebSocket * pClient = qobject_cast(sender()); if(pClient) { m_client->deleteLater(); } }