websocketserver.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "websocketserver.h"
  2. #include <QFile>
  3. #include <QtWebSockets/QWebSocket>
  4. #include <QtWebSockets/QWebSocketServer>
  5. QT_USE_NAMESPACE
  6. WebsocketServer::WebsocketServer(QObject *parent) : QObject(parent),m_pWebSocketServer(nullptr)
  7. {
  8. m_pWebSocketServer = new QWebSocketServer(QStringLiteral("WebSocket Server"),QWebSocketServer::NonSecureMode,this);
  9. connect(m_pWebSocketServer,&QWebSocketServer::newConnection,this,&WebsocketServer::onNewConnection);
  10. if(!m_pWebSocketServer->listen(QHostAddress::Any,51213)){
  11. printf("WebSocketServer listen failed\n");
  12. exit(1);
  13. }
  14. printf("WebSocketServer listen success\n");
  15. }
  16. WebsocketServer::~WebsocketServer()
  17. {
  18. m_pWebSocketServer->close();
  19. m_clients.clear();
  20. }
  21. void WebsocketServer::onNewConnection()
  22. {
  23. QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection();
  24. WebsocketClient *client = new WebsocketClient(pSocket,this);
  25. connect(client,&WebsocketClient::closed,this,&WebsocketServer::socketDisconnected);
  26. m_clients.append(client);
  27. }
  28. void WebsocketServer::socketDisconnected()
  29. {
  30. WebsocketClient *pclient = qobject_cast<WebsocketClient*>(sender());
  31. if(pclient)
  32. {
  33. m_clients.removeAll(pclient);
  34. }
  35. }