An obs-websocket client and translation layer for Godot 4.2. Currently very barebones, and only supports authentication, events sent from OBS, and requests.
- Install the addon
- Add the
NoOBSWS
node to your preferred scene - Call
NoOBSWS.connect_to_obsws()
function with the port and password provided in the obs-websocket menu in OBS - Await or connect to the
connection_ready
signal. You are now able to receive theevent_received
signal or make a request using themake_generic_request()
method.
After authorizing, you can make a request using the aforementioned make_generic_request()
method. It expects at least one argument: a String
being the request type, and an optional Dictionary
containing request parameters. For a list of request types, see the obs-websocket protocol description.
The make_generic_request()
method returns a special object, RequestResponse
, that promises to contain the request response. To make sure it is received in time, you should await that object's response_received
signal. After that, you can access its' data from the message
property.
@onready var no_obs_ws: NoOBSWS = $NoOBSWS
func _ready():
no_obs_ws.event_received.connect(_on_no_obs_ws_event_received)
no_obs_ws.connect_to_obsws(4455, "your_password_here")
# Wait for the connection
await no_obs_ws.connection_ready
# At this point, the connection is ready and you have access to the events sent by obs-websocket and making requests.
# Making a request
var request = no_obs_ws.make_generic_request("GetStats")
await request.response_received
print(request.message.get_data())
func _on_no_obs_ws_event_received(event: NoOBSWS.Message):
var event_data = event.get_data() # Returns a Dictionary conforming to the message format specified by the obs-websocket protocol, with keys transformed to snake_case from camelCase to be more Godot-like.