github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/12_ChainStream/example.go (about) 1 package main 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 8 chainStreamModule "github.com/InjectiveLabs/sdk-go/chain/stream/types" 9 "github.com/InjectiveLabs/sdk-go/client" 10 chainclient "github.com/InjectiveLabs/sdk-go/client/chain" 11 "github.com/InjectiveLabs/sdk-go/client/common" 12 ) 13 14 func main() { 15 network := common.LoadNetwork("testnet", "lb") 16 17 clientCtx, err := chainclient.NewClientContext( 18 network.ChainId, 19 "", 20 nil, 21 ) 22 if err != nil { 23 panic(err) 24 } 25 clientCtx = clientCtx.WithNodeURI(network.TmEndpoint) 26 27 chainClient, err := chainclient.NewChainClient( 28 clientCtx, 29 network, 30 common.OptionGasPrices(client.DefaultGasPriceWithDenom), 31 ) 32 33 if err != nil { 34 panic(err) 35 } 36 37 subaccountId := "0xbdaedec95d563fb05240d6e01821008454c24c36000000000000000000000000" 38 39 injUsdtMarket := "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" 40 injUsdtPerpMarket := "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" 41 42 req := chainStreamModule.StreamRequest{ 43 BankBalancesFilter: &chainStreamModule.BankBalancesFilter{ 44 Accounts: []string{"*"}, 45 }, 46 SpotOrdersFilter: &chainStreamModule.OrdersFilter{ 47 MarketIds: []string{injUsdtMarket}, 48 SubaccountIds: []string{subaccountId}, 49 }, 50 DerivativeOrdersFilter: &chainStreamModule.OrdersFilter{ 51 MarketIds: []string{injUsdtPerpMarket}, 52 SubaccountIds: []string{subaccountId}, 53 }, 54 SpotTradesFilter: &chainStreamModule.TradesFilter{ 55 MarketIds: []string{injUsdtMarket}, 56 SubaccountIds: []string{"*"}, 57 }, 58 SubaccountDepositsFilter: &chainStreamModule.SubaccountDepositsFilter{ 59 SubaccountIds: []string{subaccountId}, 60 }, 61 DerivativeOrderbooksFilter: &chainStreamModule.OrderbookFilter{ 62 MarketIds: []string{injUsdtPerpMarket}, 63 }, 64 SpotOrderbooksFilter: &chainStreamModule.OrderbookFilter{ 65 MarketIds: []string{injUsdtMarket}, 66 }, 67 PositionsFilter: &chainStreamModule.PositionsFilter{ 68 SubaccountIds: []string{subaccountId}, 69 MarketIds: []string{injUsdtPerpMarket}, 70 }, 71 DerivativeTradesFilter: &chainStreamModule.TradesFilter{ 72 SubaccountIds: []string{"*"}, 73 MarketIds: []string{injUsdtPerpMarket}, 74 }, 75 OraclePriceFilter: &chainStreamModule.OraclePriceFilter{ 76 Symbol: []string{"INJ", "USDT"}, 77 }, 78 } 79 80 ctx := context.Background() 81 82 stream, err := chainClient.ChainStream(ctx, req) 83 if err != nil { 84 panic(err) 85 } 86 87 for { 88 select { 89 case <-ctx.Done(): 90 return 91 default: 92 res, err := stream.Recv() 93 if err != nil { 94 panic(err) 95 return 96 } 97 str, _ := json.MarshalIndent(res, "", " ") 98 fmt.Print(string(str)) 99 } 100 } 101 }