#include #include #include #include "qcoreapplication.h" class WebSocketServer : public QObject { Q_OBJECT public: explicit WebSocketServer(quint16 port, QObject *parent = nullptr); private slots: void onNewConnection(); void processMessage(const QString &message); void socketDisconnected(); private: QWebSocketServer *m_webSocketServer; QList m_clients; }; WebSocketServer::WebSocketServer(quint16 port, QObject *parent) : QObject(parent) , m_webSocketServer(new QWebSocketServer(QStringLiteral("WebSocket Server"), QWebSocketServer::NonSecureMode, this)) { if (m_webSocketServer->listen(QHostAddress::Any, port)) { qDebug() << "WebSocket server listening on port" << port; connect(m_webSocketServer, &QWebSocketServer::newConnection, this, &WebSocketServer::onNewConnection); } else { qWarning() << "Failed to listen on port" << port; } } void WebSocketServer::onNewConnection() { QWebSocket *socket = m_webSocketServer->nextPendingConnection(); connect(socket, &QWebSocket::textMessageReceived, this, &WebSocketServer::processMessage); connect(socket, &QWebSocket::disconnected, this, &WebSocketServer::socketDisconnected); m_clients.append(socket); } void WebSocketServer::processMessage(const QString &message) { QWebSocket *socket = qobject_cast(sender()); if (!socket) return; qDebug() << "Message received:" << message; // Example: Echo message back to client socket->sendTextMessage(message); } void WebSocketServer::socketDisconnected() { QWebSocket *socket = qobject_cast(sender()); if (!socket) return; qDebug() << "Socket disconnected"; m_clients.removeAll(socket); socket->deleteLater(); } int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); WebSocketServer server(12345); return app.exec(); } #include "main.moc"