62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package bitgetservice
|
||
|
||
import (
|
||
"go-admin/config"
|
||
|
||
"github.com/go-admin-team/go-admin-core/logger"
|
||
)
|
||
|
||
type BitgetMarketSpotClient struct {
|
||
}
|
||
|
||
func (c *BitgetMarketSpotClient) Subscribe(symbols []string) error {
|
||
// 1. 创建Bitget客户端(不需要API密钥用于公开数据)
|
||
client := &BitgetClient{}
|
||
|
||
// 初始化公开行情客户端
|
||
marketConfig := DefaultMarketConfig()
|
||
client.marketClient = NewBitgetMarketClient(marketConfig)
|
||
if config.ExtConfig.ProxyUrl != "" {
|
||
client.SetMarketProxy("", config.ExtConfig.ProxyUrl)
|
||
}
|
||
|
||
// 3. 设置消息监听器
|
||
msgListener := func(message string) {
|
||
logger.Infof("收到市场数据: %s", message)
|
||
// 在这里处理市场数据
|
||
}
|
||
|
||
errorListener := func(message string) {
|
||
logger.Errorf("收到错误消息: %s", message)
|
||
}
|
||
|
||
client.SetMarketListeners(msgListener, errorListener)
|
||
|
||
// 4. 连接WebSocket
|
||
if err := client.ConnectMarketData(); err != nil {
|
||
logger.Errorf("连接市场数据失败: %v", err)
|
||
return err
|
||
}
|
||
|
||
// 5. 订阅现货行情
|
||
tickerListener := func(message string) {
|
||
logger.Infof("收到行情: %s", message)
|
||
}
|
||
|
||
params := []SubscribeReq{}
|
||
|
||
for _, v := range symbols {
|
||
params = append(params, SubscribeReq{
|
||
InstType: "SPOT",
|
||
Channel: "ticker",
|
||
InstId: v,
|
||
})
|
||
}
|
||
|
||
if err := client.SubscribeMarketData(params, tickerListener); err != nil {
|
||
logger.Errorf("订阅现货行情失败: %v", err)
|
||
return err
|
||
}
|
||
return nil
|
||
}
|