Reworked websocket communication to avoid high CPU usage by client application.
This commit is contained in:
@@ -73,12 +73,11 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
#[
|
#[
|
||||||
WebSocket communication with the team server
|
WebSocket communication with the team server
|
||||||
]#
|
]#
|
||||||
# Continuously send heartbeat messages
|
|
||||||
connection.ws.sendHeartbeat()
|
|
||||||
|
|
||||||
# Receive and parse websocket response message
|
|
||||||
try:
|
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:
|
case event.eventType:
|
||||||
of CLIENT_KEY_EXCHANGE:
|
of CLIENT_KEY_EXCHANGE:
|
||||||
connection.sessionKey = deriveSessionKey(clientKeyPair, decode(event.data["publicKey"].getStr()).toKey())
|
connection.sessionKey = deriveSessionKey(clientKeyPair, decode(event.data["publicKey"].getStr()).toKey())
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ proc websocketHandler(ws: WebSocket, event: WebSocketEvent, message: Message) {.
|
|||||||
cq.client.sendPublicKey(cq.keyPair.publicKey)
|
cq.client.sendPublicKey(cq.keyPair.publicKey)
|
||||||
|
|
||||||
of MessageEvent:
|
of MessageEvent:
|
||||||
# Continuously send heartbeat messages
|
|
||||||
ws.sendHeartbeat()
|
|
||||||
|
|
||||||
let event = message.recvEvent(cq.client.sessionKey)
|
let event = message.recvEvent(cq.client.sessionKey)
|
||||||
|
|
||||||
case event.eventType:
|
case event.eventType:
|
||||||
|
|||||||
Reference in New Issue
Block a user