WebSocketServer.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from PyQt5.QtWebSockets import QWebSocketServer, QWebSocket
  2. from PyQt5.QtNetwork import QHostAddress
  3. class WebSocketServer:
  4. def __init__(self):
  5. self.server = QWebSocketServer("My Server", QWebSocketServer.SslMode.NonSecureMode)
  6. self.server.closed.connect(self.onServerClosed)
  7. self.server.newConnection.connect(self.onNewConnection)
  8. self.clients = []
  9. def start(self):
  10. # address = QHostAddress(QHostAddress.LocalHost)
  11. address = QHostAddress("127.0.0.1")
  12. port = 18080
  13. if self.server.listen(address, port):
  14. print("WebSocket server started at {}:{}".format(address.toString(), port))
  15. else:
  16. print("Failed to start WebSocket server")
  17. def stop(self):
  18. print("WebSocket server stoped")
  19. self.server.close()
  20. def sendToAllClients(self, message):
  21. num_clients = len(self.clients)
  22. print("已连接客户端数量:" + str(num_clients))
  23. for client in self.clients:
  24. client.sendTextMessage(message)
  25. def onServerClosed(self):
  26. print("WebSocket server closed")
  27. def onNewConnection(self):
  28. connection = self.server.nextPendingConnection()
  29. connection.disconnected.connect(lambda: self.onClientDisconnected(connection))
  30. self.clients.append(connection)
  31. print("New client connected")
  32. def onClientDisconnected(self, client):
  33. if client in self.clients:
  34. self.clients.remove(client)
  35. print("Client disconnected")