Go

Official Go client library for ThorStreamer.

Installation

go get github.com/thorlabsDev/ThorStreamer/sdks/[email protected]

Requirements

  • Go 1.23.2+

Quick Start

main.go
package main

import (
    "context"
    "log"
    "os"
    "time"

    "github.com/joho/godotenv"
    thorclient "github.com/thorlabsDev/ThorStreamer/sdks/go/client"
)

func main() {
    godotenv.Load()

    client, err := thorclient.NewClient(thorclient.Config{
        ServerAddr:     os.Getenv("SERVER_ADDRESS"),
        Token:          os.Getenv("AUTH_TOKEN"),
        DefaultTimeout: 30 * time.Second,
    })
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    stream, err := client.SubscribeToTransactions(context.Background())
    if err != nil {
        log.Fatal(err)
    }

    for {
        msg, err := stream.Recv()
        if err != nil {
            if thorclient.IsStreamDone(err) {
                break
            }
            log.Printf("Error: %v", err)
            break
        }
        if tx := msg.GetTransaction(); tx != nil {
            log.Printf("Transaction: slot=%d", tx.Transaction.Slot)
        }
    }
}

API Reference

Creating a Client

SubscribeToTransactions

SubscribeToSlotStatus

SubscribeToWalletTransactions

Monitor up to 10 wallet addresses:

SubscribeToAccountUpdates

Monitor accounts with optional owner filtering:

Error Handling

Full Example

See examples/golang-advanced for a complete implementation with filtering, logging, and event handling.

Resources