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("BZTCP_USER 및 BZTCP_KEY 환경 변수를 설정하세요")
}
conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", user, key)
if err != nil {
log.Fatalf("연결 실패: %v", err)
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// 정상 종료 처리
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigChan
fmt.Println("\n정상 종료 중...")
cancel()
}()
fmt.Println("Benzinga TCP 스트림 시작 중...")
err = conn.Stream(ctx, func(stream bztcp.StreamData) {
// 메시지를 포맷하여 출력
data, _ := json.MarshalIndent(stream, "", " ")
fmt.Println(string(data))
})
if err != nil && err != context.Canceled {
log.Printf("스트림이 오류로 종료됨: %v", err)
}
}