github.com/polygon-io/client-go@v1.16.4/websocket/example/fmv/main.go (about) 1 package main 2 3 import ( 4 "os" 5 "os/signal" 6 7 polygonws "github.com/polygon-io/client-go/websocket" 8 "github.com/polygon-io/client-go/websocket/models" 9 "github.com/sirupsen/logrus" 10 ) 11 12 func main() { 13 log := logrus.New() 14 log.SetLevel(logrus.DebugLevel) 15 log.SetFormatter(&logrus.JSONFormatter{}) 16 c, err := polygonws.New(polygonws.Config{ 17 APIKey: os.Getenv("POLYGON_API_KEY"), 18 Feed: polygonws.BusinessFeed, 19 Market: polygonws.Stocks, 20 Log: log, 21 }) 22 if err != nil { 23 log.Fatal(err) 24 } 25 defer c.Close() 26 27 // FMV 28 _ = c.Subscribe(polygonws.BusinessFairMarketValue, "*") 29 30 if err := c.Connect(); err != nil { 31 log.Error(err) 32 return 33 } 34 35 sigint := make(chan os.Signal, 1) 36 signal.Notify(sigint, os.Interrupt) 37 38 for { 39 select { 40 case <-sigint: 41 return 42 case <-c.Error(): 43 return 44 case out, more := <-c.Output(): 45 if !more { 46 return 47 } 48 switch out.(type) { 49 case models.FairMarketValue: 50 log.WithFields(logrus.Fields{"fmv": out}).Info() 51 52 default: 53 log.WithFields(logrus.Fields{"unknown": out}).Info() 54 } 55 } 56 } 57 }