Updated ObsManager

Added logging
Added reconnecting based upon obs_reconnect.
Added bool check to see if we are connecting, or re-connecting.
This commit is contained in:
Mario Steele 2026-03-06 21:22:09 -06:00
parent 95345fc50b
commit 298381b2d9

View file

@ -1,18 +1,34 @@
extends Node extends Node
var obs: NoOBSWS
signal obs_ready() signal obs_ready()
signal obs_disconnect() signal obs_disconnect()
signal stream_state_changed(state: bool) signal stream_state_changed(state: bool)
signal input_state_changed(input_name: String, state: bool) signal input_state_changed(input_name: String, state: bool)
signal scene_changed(scene_name: String, scene_uuid: String) signal scene_changed(scene_name: String, scene_uuid: String)
static var _log: TwitchLogger = TwitchLogger.new(&"ObsManager", true, true)
var obs: NoOBSWS
var _reconnect: bool = false
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
obs = NoOBSWS.new() obs = NoOBSWS.new()
add_child(obs) add_child(obs)
obs.event_received.connect(_handle_websock_events) obs.event_received.connect(_handle_websock_events)
obs.connection_ready.connect(obs_ready.emit) obs.connection_ready.connect(func():
_reconnect = false
obs_ready.emit()
_log.i("Connected to OBS WebSocket server.")
)
obs.connection_closed_clean.connect(_handle_disconnect) obs.connection_closed_clean.connect(_handle_disconnect)
obs.connection_failed.connect(func():
_log.i("Failed to connect to server.")
if Globals.settings.obs_reconnect:
await get_tree().create_timer(15).timeout
_reconnect = true
connect_to_host()
)
func is_open() -> bool: func is_open() -> bool:
return obs.is_open() return obs.is_open()
@ -23,11 +39,14 @@ func connect_to_host() -> void:
Globals.settings.obs_pass != ""): Globals.settings.obs_pass != ""):
return return
_log.i("%s to OBS WebSocket server..." % "Reconnecting" if _reconnect else "Connecting")
if _reconnect: _reconnect = false
obs.connect_to_obsws(Globals.settings.obs_port, Globals.settings.obs_host, Globals.settings.obs_pass) obs.connect_to_obsws(Globals.settings.obs_port, Globals.settings.obs_host, Globals.settings.obs_pass)
func _handle_disconnect(reason: int, message: String) -> void: func _handle_disconnect(_reason: int, _message: String) -> void:
obs_disconnect.emit() obs_disconnect.emit()
if Globals.settings.obs_reconnect: if Globals.settings.obs_reconnect:
_reconnect = true
connect_to_host() connect_to_host()
func _handle_websock_events(event: NoOBSWS.Message) -> void: func _handle_websock_events(event: NoOBSWS.Message) -> void: