// #include "websocketserver.h" // WebSocketServer::WebSocketServer() // { // } #include "websocket_server.h" #include WebSocketServer::WebSocketServer(quint16 port, QObject *parent) : QObject(parent), m_server(new QWebSocketServer(QStringLiteral("Qt WebSocket Server"), QWebSocketServer::NonSecureMode, this)) { if (m_server->listen(QHostAddress::Any, port)) { qDebug() << "WebSocket Server listening on port" << port; connect(m_server, &QWebSocketServer::newConnection, this, &WebSocketServer::onNewConnection); } else { qDebug() << "Failed to start WebSocket Server!"; } } WebSocketServer::~WebSocketServer() { m_server->close(); qDeleteAll(m_clients); } void WebSocketServer::onNewConnection() { QWebSocket *socket = m_server->nextPendingConnection(); connect(socket, &QWebSocket::textMessageReceived, this, &WebSocketServer::onTextMessageReceived); connect(socket, &QWebSocket::disconnected, this, &WebSocketServer::onSocketDisconnected); m_clients.append(socket); qDebug() << "New client connected:" << socket->peerAddress().toString(); } void WebSocketServer::onTextMessageReceived(QString message) { QWebSocket *senderSocket = qobject_cast(sender()); qDebug() << "Received message:" << message; // Echo back to all clients for (QWebSocket *client : qAsConst(m_clients)) { if (client->isValid()) client->sendTextMessage(message); } } void WebSocketServer::onSocketDisconnected() { QWebSocket *socket = qobject_cast(sender()); if (socket) { m_clients.removeAll(socket); socket->deleteLater(); qDebug() << "Client disconnected"; } } void WebSocketServer::sendMessage(QString message) { qDebug() << "sendMessage"; for (QWebSocket *client : qAsConst(m_clients)) { if (client->isValid()) client->sendTextMessage(message); } }