This document describes the WebSocket subscription methods provided by the ChainStream Go SDK. Each method is a wrapper for the corresponding WebSocket API. For detailed parameter descriptions and return value structures, please click the corresponding API link.

Candles

Token

Ranking

Wallet

Trade

DexPool

Connection Management

Establish Connection

err := client.Stream.Connect()
if err != nil {
    log.Fatal(err)
}
All subscription methods return an Unsubscribe function that can be used to cancel subscriptions:
unsubscribe, err := client.Stream.SubscribeTokenCandles(&api.SubscribeTokenCandlesRequest{
    Chain:        "sol",
    TokenAddress: "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN",
    Resolution:   "1m",
    Callback: func(candle *api.TokenCandle) {
        log.Printf("New candle: %+v", candle)
    },
})
if err != nil {
    log.Fatal(err)
}

// Cancel subscription
unsubscribe()

Batch Subscription

Batch subscribe to multiple data streams

Usage Example

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

// Cancel all subscriptions
for _, unsubscribe := range unsubscribes {
    unsubscribe()
}
For detailed parameter descriptions, data formats, and error handling, please refer to the WebSocket API Documentation.