Reworked websocket communication to avoid high CPU usage by client application.

This commit is contained in:
Jakob Friedl
2025-11-02 09:57:53 +01:00
parent 8e16843aec
commit ec2388d993
2 changed files with 108 additions and 112 deletions

View File

@@ -73,12 +73,11 @@ proc main(ip: string = "localhost", port: int = 37573) =
#[
WebSocket communication with the team server
]#
# Continuously send heartbeat messages
connection.ws.sendHeartbeat()
# Receive and parse websocket response message
try:
let event = recvEvent(connection.ws.receiveMessage().get(), connection.sessionKey)
# Receive and parse websocket response message
let message = connection.ws.receiveMessage(timeout = 16) # Use a 16ms timeout to reduce CPU load = ~60FPS
if message.isSome():
let event = recvEvent(message.get(), connection.sessionKey)
case event.eventType:
of CLIENT_KEY_EXCHANGE:
connection.sessionKey = deriveSessionKey(clientKeyPair, decode(event.data["publicKey"].getStr()).toKey())

View File

@@ -45,9 +45,6 @@ proc websocketHandler(ws: WebSocket, event: WebSocketEvent, message: Message) {.
cq.client.sendPublicKey(cq.keyPair.publicKey)
of MessageEvent:
# Continuously send heartbeat messages
ws.sendHeartbeat()
let event = message.recvEvent(cq.client.sessionKey)
case event.eventType: