本文档描述了 ChainStream Go SDK 提供的 WebSocket 订阅方法。每个方法都是对应 WebSocket API 的包装器。有关详细的参数描述和返回值结构,请点击相应的 API 链接。

K线

代币

排行榜

钱包

交易

DexPool

连接管理

建立连接

err := client.Stream.Connect()
if err != nil {
    log.Fatal(err)
}
所有订阅方法都返回一个 Unsubscribe 函数,可用于取消订阅:
unsubscribe, err := client.Stream.SubscribeTokenCandles(&api.SubscribeTokenCandlesRequest{
    Chain:        "sol",
    TokenAddress: "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN",
    Resolution:   "1m",
    Callback: func(candle *api.TokenCandle) {
        log.Printf("新K线: %+v", candle)
    },
})
if err != nil {
    log.Fatal(err)
}

// 取消订阅
unsubscribe()

批量订阅

批量订阅多个数据流

使用示例

unsubscribes, err := client.Stream.BatchSubscribe(func() []func() {
    return []func(){
        func() {
            client.Stream.SubscribeWalletBalance(&api.SubscribeWalletBalanceRequest{
                Chain:         "sol",
                WalletAddress: "钱包地址 1",
                Callback: func(data []*api.WalletBalance) {
                    // todo
                },
            })
        },
        
        func() {
            client.Stream.SubscribeWalletBalance(&api.SubscribeWalletBalanceRequest{
                Chain:         "sol",
                WalletAddress: "钱包地址 2",
                Callback: func(data []*api.WalletBalance) {
                    // todo
                },
            })
        },
    }
})
if err != nil {
    log.Fatal(err)
}

// 取消所有订阅
for _, unsubscribe := range unsubscribes {
    unsubscribe()
}
有关详细的参数描述、数据格式和错误处理,请参考 WebSocket API 文档