test 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <QtCore/QDebug>
  2. #include <QtWebSockets/QWebSocket>
  3. #include <QtWebSockets/QWebSocketServer>
  4. #include "qcoreapplication.h"
  5. class WebSocketServer : public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit WebSocketServer(quint16 port, QObject *parent = nullptr);
  10. private slots:
  11. void onNewConnection();
  12. void processMessage(const QString &message);
  13. void socketDisconnected();
  14. private:
  15. QWebSocketServer *m_webSocketServer;
  16. QList<QWebSocket *> m_clients;
  17. };
  18. WebSocketServer::WebSocketServer(quint16 port, QObject *parent)
  19. : QObject(parent)
  20. , m_webSocketServer(new QWebSocketServer(QStringLiteral("WebSocket Server"),
  21. QWebSocketServer::NonSecureMode,
  22. this))
  23. {
  24. if (m_webSocketServer->listen(QHostAddress::Any, port)) {
  25. qDebug() << "WebSocket server listening on port" << port;
  26. connect(m_webSocketServer,
  27. &QWebSocketServer::newConnection,
  28. this,
  29. &WebSocketServer::onNewConnection);
  30. } else {
  31. qWarning() << "Failed to listen on port" << port;
  32. }
  33. }
  34. void WebSocketServer::onNewConnection()
  35. {
  36. QWebSocket *socket = m_webSocketServer->nextPendingConnection();
  37. connect(socket, &QWebSocket::textMessageReceived, this, &WebSocketServer::processMessage);
  38. connect(socket, &QWebSocket::disconnected, this, &WebSocketServer::socketDisconnected);
  39. m_clients.append(socket);
  40. }
  41. void WebSocketServer::processMessage(const QString &message)
  42. {
  43. QWebSocket *socket = qobject_cast<QWebSocket *>(sender());
  44. if (!socket)
  45. return;
  46. qDebug() << "Message received:" << message;
  47. // Example: Echo message back to client
  48. socket->sendTextMessage(message);
  49. }
  50. void WebSocketServer::socketDisconnected()
  51. {
  52. QWebSocket *socket = qobject_cast<QWebSocket *>(sender());
  53. if (!socket)
  54. return;
  55. qDebug() << "Socket disconnected";
  56. m_clients.removeAll(socket);
  57. socket->deleteLater();
  58. }
  59. int main(int argc, char *argv[])
  60. {
  61. QCoreApplication app(argc, argv);
  62. WebSocketServer server(12345);
  63. return app.exec();
  64. }
  65. #include "main.moc"