Skip to content

Commit

Permalink
Main: remove poll time from backend WS, reconnect fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
cjmaxik committed Oct 25, 2024
1 parent ba5cff1 commit 4602125
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 26 deletions.
7 changes: 7 additions & 0 deletions scripts/control_panel/control_panel.gd
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,13 @@ func _on_backend_status_pressed() -> void:
CpHelpers.insert_data(%BackendStats, Templates.format_backend_stats([0, 0]))
main.disconnect_backend()

await get_tree().create_timer(1.0).timeout
var callback: Callable = func():
if not Globals.is_singing:
Globals.is_paused = false
Globals.ready_for_speech.emit()
main.connect_backend(callback)

func _on_speech_text_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed():
Expand Down
2 changes: 1 addition & 1 deletion scripts/main/audio_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func _on_stop_singing() -> void:

func _on_speech_player_finished() -> void:
var random_wait := randf_range(0.05, 0.69)
print_debug("Waiting for %f seconds" % random_wait)
print("-- Waiting for %f seconds" % random_wait)
await get_tree().create_timer(random_wait).timeout

Globals.is_speaking = false
Expand Down
11 changes: 6 additions & 5 deletions scripts/main/main.gd
Original file line number Diff line number Diff line change
Expand Up @@ -234,18 +234,19 @@ func _on_connection_closed() -> void:
control_panel.backend_disconnected()

var callback: Callable = func():
Globals.is_paused = false
Globals.ready_for_speech.emit()
if not Globals.is_singing:
Globals.is_paused = false
Globals.ready_for_speech.emit()

if connection_attempt < 11:
connection_attempt += 1
print("Trying to reconnect, attempt %s" % connection_attempt)
print("Toaster: Trying to reconnect, attempt %s" % connection_attempt)
await get_tree().create_timer(1.0).timeout

print("Reconnecting...")
print("Toaster: Reconnecting...")
connect_backend(callback)
else:
print("Too many connection attempts, giving up :(")
print("Toaster: Too many connection attempts, giving up :(")
connection_attempt = 0

# endregion
Expand Down
4 changes: 2 additions & 2 deletions scripts/main/speech_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ func _process(_delta: float) -> void:
printerr("Skipping message %s - skipped on process" % message.id)
return

print("Message ID: ", message.id)
current_speech_id = message.id

if message.has("emotions"):
Expand All @@ -43,11 +42,12 @@ func _process(_delta: float) -> void:
Globals.new_speech.emit(message)

"ContinueSpeech":
print("ContinueSpeech: ", message.id)
print("- ContinueSpeech: ", message.id)
Globals.continue_speech.emit(message)

"EndSpeech":
print("EndSpeech: ", message.id)
print("----------")
current_speech_id = 0
Globals.end_speech.emit()

Expand Down
33 changes: 15 additions & 18 deletions scripts/shared/websocket_client.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ const URL_PATH: String = "%s://%s:%s"
var socket: WebSocketPeer
var last_state: WebSocketPeer.State = WebSocketPeer.STATE_CLOSED

var poll_time: float = 0.5
var _poll_counter: float = 0.0

var secure: String = "wss" if Globals.config.get_backend("secure") else "ws"
var host: String = Globals.config.get_backend("host")
var port: String = Globals.config.get_backend("port")
Expand All @@ -30,33 +27,33 @@ var outgoing_messages_count: int = 0
func _ready() -> void:
set_process(false)

func _process(delta: float) -> void:
_poll_counter += delta
func _process(_delta: float) -> void:
if socket.get_ready_state() != WebSocketPeer.STATE_CLOSED:
socket.poll()

if _poll_counter >= poll_time:
_poll_counter = 0.0
if socket.get_ready_state() != socket.STATE_CLOSED:
socket.poll()
var state: WebSocketPeer.State = socket.get_ready_state()
if last_state != state:
last_state = state

var state: WebSocketPeer.State = socket.get_ready_state()
if last_state != state:
last_state = state
if state == socket.STATE_OPEN:
match state:
WebSocketPeer.STATE_OPEN:
connection_established.emit()
elif state == socket.STATE_CLOSED:

WebSocketPeer.STATE_CLOSED:
var code = socket.get_close_code()
var reason = socket.get_close_reason()
printerr("Toaster client: Connection closed with code %d, reason %s. Clean: %s" % [code, reason, code != -1])

connection_closed.emit()
set_process(false)

while socket.get_ready_state() == socket.STATE_OPEN and socket.get_available_packet_count():
if state == WebSocketPeer.STATE_OPEN:
while socket.get_available_packet_count():
incoming_messages_count += 1
data_received.emit(socket.get_packet(), [incoming_messages_count, outgoing_messages_count])

func is_open() -> bool:
return socket.get_ready_state() == socket.STATE_OPEN
return socket.get_ready_state() == WebSocketPeer.STATE_OPEN

func connect_client() -> void:
print("Toaster client: Establishing connection...")
Expand All @@ -73,15 +70,15 @@ func connect_client() -> void:
connection_closed.emit()

last_state = socket.get_ready_state()
print("Toaster client: Established!")
print("Toaster client: Connecting...")
set_process(true)

func send_message(json: Dictionary) -> void:
var message: String = JSON.stringify(json)

outgoing_messages_count += 1

if not socket or socket.get_ready_state() != socket.STATE_OPEN:
if not socket or socket.get_ready_state() != WebSocketPeer.STATE_OPEN:
printerr("Toaster client: Socket connection is not established")

var err: Error = socket.send_text(message)
Expand Down

0 comments on commit 4602125

Please sign in to comment.