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 BitgetMarketFutureClient struct {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (c *BitgetMarketFutureClient) 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.Info("收到市场数据: %s", message)
|
|||
|
|
// 在这里处理市场数据
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
errorListener := func(message string) {
|
|||
|
|
logger.Error("收到错误消息: %s", message)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
client.SetMarketListeners(msgListener, errorListener)
|
|||
|
|
|
|||
|
|
// 4. 连接WebSocket
|
|||
|
|
if err := client.ConnectMarketData(); err != nil {
|
|||
|
|
logger.Error("连接市场数据失败: %v", err)
|
|||
|
|
return err
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 5. 订阅合约行情
|
|||
|
|
tickerListener := func(message string) {
|
|||
|
|
logger.Info("收到BTC-USDT合约行情: %s", message)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
params := []SubscribeReq{}
|
|||
|
|
|
|||
|
|
for _, v := range symbols {
|
|||
|
|
params = append(params, SubscribeReq{
|
|||
|
|
InstType: "USDT-FUTURES",
|
|||
|
|
Channel: "ticker",
|
|||
|
|
InstId: v,
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if err := client.SubscribeMarketData(params, tickerListener); err != nil {
|
|||
|
|
logger.Error("订阅合约行情失败: %v", err)
|
|||
|
|
return err
|
|||
|
|
}
|
|||
|
|
return nil
|
|||
|
|
}
|