Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Proxies/FeedGeoJson/websocket_server.cpp
T
torstenandCopilot 7a6be7474e Qt6 migration: Fix BUILD_RTI=OFF build errors in TrainingAreaBase
- training_area_telegrams.cpp: Fixed QJsonObject initializer syntax (Qt6 requires {{}} not ({}))
- training_area_telegrams.cpp: Fixed fromJson() methods to access m_* members directly
- training_area_telegrams.cpp: Fixed brace mismatches in multiple toJson() methods
- training_area_telegrams.h: Changed Header struct to public members for consistency
- tx_mixin.cpp: Fixed getEquipmentNumber() template for direct member access
- lts_coordinate.cpp: Added missing #include <iomanip>
- MIGRATION_STATUS.md: Added migration progress tracking document

C++17 constraint enforced due to RTI Connext DDS 7.7.0 incompatibility with C++20+

Build status: BUILD_RTI=OFF successful (0 errors, warnings only)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-23 20:49:23 +02:00

67 lines
1.8 KiB
C++
Executable File

#include "websocket_server.h"
#include <utility>
#include <QtCore/QDebug>
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<QWebSocket *>(sender());
qDebug() << "Received message:" << message;
for (QWebSocket *client : std::as_const(m_clients)) {
if (client->isValid())
client->sendTextMessage(message);
}
}
void WebSocketServer::onSocketDisconnected() {
QWebSocket *socket = qobject_cast<QWebSocket *>(sender());
if (socket) {
m_clients.removeAll(socket);
socket->deleteLater();
qDebug() << "Client disconnected";
}
}
void WebSocketServer::sendMessage(QString message)
{
qDebug() << "sendMessage";
for (QWebSocket *client : std::as_const(m_clients)) {
if (client->isValid())
client->sendTextMessage(message);
}
}