## Connect

Attach to an existing Live session. Do not send session.start again.

**WebSocket** `wss://api.openai.com/v1/live/sessions/{session_id}/attach`

### Example

```go
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
		}
	}
}
```
