Connect
Attach to an existing Live session. Do not send session.start again.
WebSocket wss://api.openai.com/v1/live/sessions/{session_id}/attach
Connect
package main
import (
"context"
"fmt"
openai "github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/live"
"log"
"time"
)
func main() {
if err := observe(); err != nil {
log.Fatal(err)
}
}
func observe() error {
// Stop waiting if the peer never sends the expected events.
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
client := openai.NewClient()
// Use an eligible existing Live session ID owned by your project.
connection, err := client.Live.Sideband.Connect(ctx, "sess_123", live.SidebandConnectionOptions{})
if err != nil {
return err
}
// Release only this observer, not the owner's session.
defer connection.Close()
for {
received, err := connection.Recv(ctx)
if err != nil {
return fmt.Errorf("observer disconnected before a usage update or session.closed: %w", err)
}
switch event := received.AsAny().(type) {
case live.ErrorEvent:
return fmt.Errorf("Live reported a session error.")
case live.SessionUsageUpdatedEvent:
fmt.Println("Current cumulative usage:", event.Usage)
return nil
case live.SessionClosedEvent:
fmt.Println("Final usage:", event.Usage)
return nil
}
}
}