- 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>
67 lines
1.8 KiB
C++
Executable File
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);
|
|
}
|
|
}
|