Official SDKs

Four languages,
one protocol

Official SDKs for Go, TypeScript, Python, and Rust, all maintained in the same monorepo with full feature parity.

Go SDK

Available on pkg.go.dev.

go get github.com/NIKX-Tech/relayly/sdk/go

Connect to a relay

key, err := relayly.LoadOrGenerateKey("~/.relayly/device.key")
if err != nil {
    log.Fatal(err)
}

client, err := relayly.Connect(ctx, "wss://your-server", relayly.Options{
    DeviceID:   "my-laptop",
    PrivateKey: key,
})
if err != nil {
    log.Fatal(err)
}
defer client.Close()

Pair devices

// Device A - request a code
code, err := client.RequestPairCode(ctx)
fmt.Println("Share this code:", code.Short)

// Device B - accept a code
peer, err := client.AcceptPair(ctx, "483921")

Send & receive

err = client.Send(ctx, peer.ID, []byte("hello!"))

for msg := range client.Messages() {
    fmt.Printf("[%s] %s\n", msg.From, msg.Payload)
}

Auto-reconnect: Exponential backoff built in. Configure with ReconnectDelay, MaxReconnectDelay, OnDisconnect, and OnReconnect.

Want to contribute an SDK for another language?

Open a PR on GitHub