Path: blob/master/bitget-golang-sdk-api/pkg/client/ws/bitgetwsclient.go
518 views
package ws12import (3"bitget/constants"4"bitget/internal/common"5"bitget/internal/model"6"bitget/logging/applogger"7"strings"8)910type BitgetWsClient struct {11bitgetBaseWsClient *common.BitgetBaseWsClient12NeedLogin bool13}1415func (p *BitgetWsClient) Init(needLogin bool, listener common.OnReceive, errorListener common.OnReceive) *BitgetWsClient {16p.bitgetBaseWsClient = new(common.BitgetBaseWsClient).Init()17p.bitgetBaseWsClient.SetListener(listener, errorListener)18p.bitgetBaseWsClient.ConnectWebSocket()19p.bitgetBaseWsClient.StartReadLoop()20p.bitgetBaseWsClient.ExecuterPing()2122if needLogin {23applogger.Info("login in ...")24p.bitgetBaseWsClient.Login()25for {26if !p.bitgetBaseWsClient.LoginStatus {27continue28}29break30}31applogger.Info("login in ... success")32}3334return p3536}3738func (p *BitgetWsClient) Connect() *BitgetWsClient {39p.bitgetBaseWsClient.Connect()40return p41}4243func (p *BitgetWsClient) UnSubscribe(list []model.SubscribeReq) {4445var args []interface{}46for i := 0; i < len(list); i++ {47delete(p.bitgetBaseWsClient.ScribeMap, list[i])48p.bitgetBaseWsClient.AllSuribe.Add(list[i])49p.bitgetBaseWsClient.AllSuribe.Remove(list[i])50args = append(args, list[i])51}5253wsBaseReq := model.WsBaseReq{54Op: constants.WsOpUnsubscribe,55Args: args,56}5758p.SendMessageByType(wsBaseReq)59}6061func (p *BitgetWsClient) SubscribeDef(list []model.SubscribeReq) {6263var args []interface{}64for i := 0; i < len(list); i++ {65req := toUpperReq(list[i])66args = append(args, req)67}68wsBaseReq := model.WsBaseReq{69Op: constants.WsOpSubscribe,70Args: args,71}7273p.SendMessageByType(wsBaseReq)74}7576func toUpperReq(req model.SubscribeReq) model.SubscribeReq {77req.InstType = strings.ToUpper(req.InstType)78req.InstId = strings.ToUpper(req.InstId)79req.Channel = strings.ToLower(req.Channel)80if "" == req.Coin {81req.Coin = strings.ToLower(req.InstId)82}83return req8485}8687func (p *BitgetWsClient) Subscribe(list []model.SubscribeReq, listener common.OnReceive) {8889var args []interface{}90for i := 0; i < len(list); i++ {91req := toUpperReq(list[i])92args = append(args, req)9394p.bitgetBaseWsClient.ScribeMap[req] = listener95p.bitgetBaseWsClient.AllSuribe.Add(req)96args = append(args, req)97}9899wsBaseReq := model.WsBaseReq{100Op: constants.WsOpSubscribe,101Args: args,102}103104p.bitgetBaseWsClient.SendByType(wsBaseReq)105}106107func (p *BitgetWsClient) SendMessage(msg string) {108p.bitgetBaseWsClient.Send(msg)109}110111func (p *BitgetWsClient) SendMessageByType(req model.WsBaseReq) {112p.bitgetBaseWsClient.SendByType(req)113}114115116