package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"os/signal"
"syscall"
"github.com/Benzinga/go-bztcp/bztcp"
)
func main() {
user := os.Getenv("BZTCP_USER")
key := os.Getenv("BZTCP_KEY")
if user == "" || key == "" {
log.Fatal("Set BZTCP_USER and BZTCP_KEY environment variables")
}
conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", user, key)
if err != nil {
log.Fatalf("Connection failed: %v", err)
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// Graceful shutdown
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigChan
fmt.Println("\nShutting down gracefully...")
cancel()
}()
fmt.Println("Starting Benzinga TCP stream...")
err = conn.Stream(ctx, func(stream bztcp.StreamData) {
// Pretty print the message
data, _ := json.MarshalIndent(stream, "", " ")
fmt.Println(string(data))
})
if err != nil && err != context.Canceled {
log.Printf("Stream ended with error: %v", err)
}
}