Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+65
@@ -0,0 +1,65 @@
|
||||
// #include "websocketserver.h"
|
||||
|
||||
// WebSocketServer::WebSocketServer()
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
#include "websocket_server.h"
|
||||
#include <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;
|
||||
|
||||
// Echo back to all clients
|
||||
for (QWebSocket *client : qAsConst(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 : qAsConst(m_clients)) {
|
||||
if (client->isValid())
|
||||
client->sendTextMessage(message);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user