Fix getting stuck on reconnect if the first attempt fails

also added the hostname to the register request
This commit is contained in:
2023-08-02 23:19:26 +02:00
parent 60fdbf9557
commit 07e72dc755

View File

@@ -3,24 +3,32 @@ extends HTTPRequest
var socket = WebSocketPeer.new() var socket = WebSocketPeer.new()
var client_id var client_id
var connected = false
func InitWebsocket(): func InitWebsocket():
print("Connecting websocket ") print("Connecting websocket ")
socket.max_queued_packets = 32768 socket.max_queued_packets = 32768
socket.outbound_buffer_size = 5000000 socket.outbound_buffer_size = 5000000
socket.connect_to_url($"/root/Main".websocket_url, TLSOptions.client_unsafe()) socket.connect_to_url($"/root/Main".websocket_url, TLSOptions.client_unsafe())
var timeout = 5
while socket.get_ready_state() != WebSocketPeer.STATE_OPEN: while socket.get_ready_state() != WebSocketPeer.STATE_OPEN:
socket.poll() socket.poll()
await get_tree().create_timer(.25).timeout
timeout -= 0.25
if timeout <= 0:
timeout = 5
socket.connect_to_url($"/root/Main".websocket_url, TLSOptions.client_unsafe())
var init_message = { var init_message = {
"register": { "register": {
"version": 1, "version": 1,
"auth_key": $"/root/Main".auth_key "auth_key": $"/root/Main".auth_key,
"hostname": $"/root/Main".hostname
} }
} }
socket.send_text(str(init_message)) socket.send_text(str(init_message))
connected = true
print("Connected") print("Connected")
while true: while connected:
await PollWebsocket() await PollWebsocket()
RenderingServer.force_draw() RenderingServer.force_draw()
DisplayServer.process_events() DisplayServer.process_events()
@@ -67,8 +75,11 @@ func PollWebsocket():
"value": result_value "value": result_value
} }
} }
print("[%s] Sending result via wss..." % str(response).length())
var time_start = Time.get_unix_time_from_system()
socket.send_text(str(response)) socket.send_text(str(response))
print("Sent result ", result_path) var time_elapsed = Time.get_unix_time_from_system() - time_start
print("Sent result in %s \n" % time_elapsed, result_path)
main.rendering = false main.rendering = false
elif state == WebSocketPeer.STATE_CLOSING: elif state == WebSocketPeer.STATE_CLOSING:
socket.poll() socket.poll()
@@ -77,9 +88,10 @@ func PollWebsocket():
var code = socket.get_close_code() var code = socket.get_close_code()
var reason = socket.get_close_reason() var reason = socket.get_close_reason()
print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1]) print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1])
print("Attempting reconnect in 10") print("Attempting reconnect in 5")
set_process(false) # Stop processing. set_process(false) # Stop processing.
await get_tree().create_timer(10).timeout connected = false
await get_tree().create_timer(5).timeout
InitWebsocket() InitWebsocket()
func _process(_delta): func _process(_delta):