github.com/polygon-io/client-go@v1.16.4/websocket/example/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.RealTime, 19 Market: polygonws.Stocks, 20 Log: log, 21 }) 22 if err != nil { 23 log.Fatal(err) 24 } 25 defer c.Close() 26 27 // aggregates 28 //_ = c.Subscribe(polygonws.StocksMinAggs, "*") 29 //_ = c.Subscribe(polygonws.StocksSecAggs, "*") 30 31 // trades 32 //_ = c.Subscribe(polygonws.StocksTrades, "*") 33 _ = c.Subscribe(polygonws.StocksTrades, "SPY") 34 35 // quotes 36 //_ = c.Subscribe(polygonws.StocksQuotes, "*") 37 _ = c.Subscribe(polygonws.StocksQuotes, "SPY") 38 39 if err := c.Connect(); err != nil { 40 log.Error(err) 41 return 42 } 43 44 sigint := make(chan os.Signal, 1) 45 signal.Notify(sigint, os.Interrupt) 46 47 for { 48 select { 49 case <-sigint: 50 return 51 case <-c.Error(): 52 return 53 case out, more := <-c.Output(): 54 if !more { 55 return 56 } 57 switch out.(type) { 58 case models.EquityAgg: 59 log.WithFields(logrus.Fields{"aggregate": out}).Info() 60 case models.EquityTrade: 61 log.WithFields(logrus.Fields{"trade": out}).Info() 62 case models.EquityQuote: 63 log.WithFields(logrus.Fields{"quote": out}).Info() 64 } 65 } 66 } 67 }