Skip to content
This repository was archived by the owner on Jan 14, 2022. It is now read-only.

christopher-dG/go-obs-websocket

Folders and files

NameName
Last commit message
Last commit date
May 1, 2020
Sep 8, 2018
May 25, 2018
May 25, 2018
Nov 16, 2018
May 1, 2020
Dec 24, 2018
Mar 18, 2020
May 1, 2020
May 27, 2018
May 30, 2018
Mar 18, 2020
Aug 17, 2018
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Mar 18, 2020
Dec 24, 2018
Dec 24, 2018
Sep 5, 2018
May 1, 2020
May 1, 2020
May 1, 2020
May 1, 2020
May 1, 2020
May 1, 2020
May 1, 2020
May 1, 2020
Jul 20, 2020
May 1, 2020
May 1, 2020
May 1, 2020
Mar 18, 2020

Repository files navigation

obsws

Build Status GoDoc

obsws provides client functionality for obs-websocket. Currently, the target version is 4.4.

Installation

go get github.com/christopher-dG/go-obs-websocket

Usage

package main

import (
	"log"
	"time"

	"github.com/christopher-dG/go-obs-websocket"
)

func main() {
	// Connect a client.
	c := obsws.Client{Host: "localhost", Port: 4444}
	if err := c.Connect(); err != nil {
		log.Fatal(err)
	}
	defer c.Disconnect()

	// Send and receive a request asynchronously.
	req := obsws.NewGetStreamingStatusRequest()
	if err := req.Send(c); err != nil {
		log.Fatal(err)
	}
	// This will block until the response comes (potentially forever).
	resp, err := req.Receive()
	if err != nil {
		log.Fatal(err)
	}
	log.Println("streaming:", resp.Streaming)

	// Set the amount of time we can wait for a response.
	obsws.SetReceiveTimeout(time.Second * 2)

	// Send and receive a request synchronously.
	req = obsws.NewGetStreamingStatusRequest()
	// Note that we create a new request,
	// because requests have IDs that must be unique.
	// This will block for up to two seconds, since we set a timeout.
	resp, err = req.SendReceive(c)
	if err != nil {
		log.Fatal(err)
	}
	log.Println("streaming:", resp.Streaming)

	// Respond to events by registering handlers.
	c.AddEventHandler("SwitchScenes", func(e obsws.Event) {
		// Make sure to assert the actual event type.
		log.Println("new scene:", e.(obsws.SwitchScenesEvent).SceneName)
	})

	time.Sleep(time.Second * 10)
}