| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #include <QtCore/QDebug>
- #include <QtWebSockets/QWebSocket>
- #include <QtWebSockets/QWebSocketServer>
- #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<QWebSocket *> 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<QWebSocket *>(sender());
- if (!socket)
- return;
- qDebug() << "Message received:" << message;
- // Example: Echo message back to client
- socket->sendTextMessage(message);
- }
- void WebSocketServer::socketDisconnected()
- {
- QWebSocket *socket = qobject_cast<QWebSocket *>(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"
|