Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bitgetlimited
GitHub Repository: bitgetlimited/v3-bitget-api-sdk
Path: blob/master/bitget-golang-sdk-api/pkg/client/ws/bitgetwsclient.go
518 views
1
package ws
2
3
import (
4
"bitget/constants"
5
"bitget/internal/common"
6
"bitget/internal/model"
7
"bitget/logging/applogger"
8
"strings"
9
)
10
11
type BitgetWsClient struct {
12
bitgetBaseWsClient *common.BitgetBaseWsClient
13
NeedLogin bool
14
}
15
16
func (p *BitgetWsClient) Init(needLogin bool, listener common.OnReceive, errorListener common.OnReceive) *BitgetWsClient {
17
p.bitgetBaseWsClient = new(common.BitgetBaseWsClient).Init()
18
p.bitgetBaseWsClient.SetListener(listener, errorListener)
19
p.bitgetBaseWsClient.ConnectWebSocket()
20
p.bitgetBaseWsClient.StartReadLoop()
21
p.bitgetBaseWsClient.ExecuterPing()
22
23
if needLogin {
24
applogger.Info("login in ...")
25
p.bitgetBaseWsClient.Login()
26
for {
27
if !p.bitgetBaseWsClient.LoginStatus {
28
continue
29
}
30
break
31
}
32
applogger.Info("login in ... success")
33
}
34
35
return p
36
37
}
38
39
func (p *BitgetWsClient) Connect() *BitgetWsClient {
40
p.bitgetBaseWsClient.Connect()
41
return p
42
}
43
44
func (p *BitgetWsClient) UnSubscribe(list []model.SubscribeReq) {
45
46
var args []interface{}
47
for i := 0; i < len(list); i++ {
48
delete(p.bitgetBaseWsClient.ScribeMap, list[i])
49
p.bitgetBaseWsClient.AllSuribe.Add(list[i])
50
p.bitgetBaseWsClient.AllSuribe.Remove(list[i])
51
args = append(args, list[i])
52
}
53
54
wsBaseReq := model.WsBaseReq{
55
Op: constants.WsOpUnsubscribe,
56
Args: args,
57
}
58
59
p.SendMessageByType(wsBaseReq)
60
}
61
62
func (p *BitgetWsClient) SubscribeDef(list []model.SubscribeReq) {
63
64
var args []interface{}
65
for i := 0; i < len(list); i++ {
66
req := toUpperReq(list[i])
67
args = append(args, req)
68
}
69
wsBaseReq := model.WsBaseReq{
70
Op: constants.WsOpSubscribe,
71
Args: args,
72
}
73
74
p.SendMessageByType(wsBaseReq)
75
}
76
77
func toUpperReq(req model.SubscribeReq) model.SubscribeReq {
78
req.InstType = strings.ToUpper(req.InstType)
79
req.InstId = strings.ToUpper(req.InstId)
80
req.Channel = strings.ToLower(req.Channel)
81
if "" == req.Coin {
82
req.Coin = strings.ToLower(req.InstId)
83
}
84
return req
85
86
}
87
88
func (p *BitgetWsClient) Subscribe(list []model.SubscribeReq, listener common.OnReceive) {
89
90
var args []interface{}
91
for i := 0; i < len(list); i++ {
92
req := toUpperReq(list[i])
93
args = append(args, req)
94
95
p.bitgetBaseWsClient.ScribeMap[req] = listener
96
p.bitgetBaseWsClient.AllSuribe.Add(req)
97
args = append(args, req)
98
}
99
100
wsBaseReq := model.WsBaseReq{
101
Op: constants.WsOpSubscribe,
102
Args: args,
103
}
104
105
p.bitgetBaseWsClient.SendByType(wsBaseReq)
106
}
107
108
func (p *BitgetWsClient) SendMessage(msg string) {
109
p.bitgetBaseWsClient.Send(msg)
110
}
111
112
func (p *BitgetWsClient) SendMessageByType(req model.WsBaseReq) {
113
p.bitgetBaseWsClient.SendByType(req)
114
}
115
116