Untitled
unknown
plain_text
4 years ago
3.7 kB
7
Indexable
package main import ( ws "github.com/gorilla/websocket" "github.com/prometheus/common/log" ) type Product struct { ID string `json:"id"` BaseCurrency string `json:"base_currency"` QuoteCurrency string `json:"quote_currency"` BaseMinSize string `json:"base_min_size"` BaseMaxSize string `json:"base_max_size"` QuoteIncrement string `json:"quote_increment"` BaseIncrement string `json:"base_increment"` DisplayName string `json:"display_name"` MinMarketFunds string `json:"min_market_funds"` MaxMarketFunds string `json:"max_market_funds"` MarginEnabled bool `json:"margin_enabled"` PostOnly bool `json:"post_only"` LimitOnly bool `json:"limit_only"` CancelOnly bool `json:"cancel_only"` TradingDisabled bool `json:"trading_disabled"` Status string `json:"status"` StatusMessage string `json:"status_message"` } type Currency struct { ID string `json:"id"` Name string `json:"name"` MinSize string `json:"min_size"` } type Message struct { Type string `json:"type"` ProductID string `json:"product_id"` ProductIds []string `json:"product_ids"` Products []Product `json:"products"` Currencies []Currency `json:"currencies"` TradeID int `json:"trade_id,number"` OrderID string `json:"order_id"` ClientOID string `json:"client_oid"` Sequence int64 `json:"sequence,number"` MakerOrderID string `json:"maker_order_id"` TakerOrderID string `json:"taker_order_id"` Time string `json:"time,string"` RemainingSize string `json:"remaining_size"` NewSize string `json:"new_size"` OldSize string `json:"old_size"` Size string `json:"size"` Price string `json:"price"` Side string `json:"side"` Reason string `json:"reason"` OrderType string `json:"order_type"` Funds string `json:"funds"` NewFunds string `json:"new_funds"` OldFunds string `json:"old_funds"` Message string `json:"message"` Bids []string `json:"bids,omitempty"` Asks []string `json:"asks,omitempty"` Changes []SnapshotChange `json:"changes,omitempty"` LastSize string `json:"last_size"` BestBid string `json:"best_bid"` BestAsk string `json:"best_ask"` Channels []MessageChannel `json:"channels"` UserID string `json:"user_id"` ProfileID string `json:"profile_id"` LastTradeID int `json:"last_trade_id"` } type MessageChannel struct { Name string `json:"name"` ProductIds []string `json:"product_ids"` } type SnapshotChange struct { Side string Price string Size string } type SnapshotEntry struct { Entry []string } func main(){ var wsDialer ws.Dialer wsConn, _, err := wsDialer.Dial("wss://ws-feed.exchange.coinbase.com", nil) if err != nil { println(err.Error()) } subscribe := Message{ Type: "subscribe", Channels: []MessageChannel{ MessageChannel{ Name: "heartbeat", ProductIds: []string{ "BTC-USD", }, }, MessageChannel{ Name: "level2", ProductIds: []string{ "BTC-USD", }, }, }, } if err := wsConn.WriteJSON(subscribe); err != nil { println(err.Error()) } for { msgType, bs, err := wsConn.ReadMessage() if err != nil { log.Error(err) return } log.Infof("Message type %v", msgType) log.Infof("Message %v", string(bs)) } }
Editor is loading...