Files
-rpi-sendspin/third_party/sendspin-go/examples/basic-server

Basic Server Example

This example demonstrates how to create a simple Sendspin streaming server that broadcasts a test tone to connected players.

What it does

  • Creates a Sendspin server that streams a 440Hz test tone
  • Listens for WebSocket connections from players
  • Broadcasts synchronized audio to all connected clients
  • Supports mDNS service advertisement for easy discovery
  • Handles multiple clients with different codec preferences

Building

cd examples/basic-server
go build

Running

Start server with defaults (192kHz/24-bit stereo):

./basic-server

Start on a different port:

./basic-server -port 9000

Configure sample rate and channels:

./basic-server -rate 48000 -channels 2

Disable mDNS:

./basic-server -mdns=false

Command-line options

  • -port - Server port (default: 8927)
  • -name - Server name (default: "Basic Server")
  • -rate - Sample rate in Hz (default: 192000)
  • -channels - Number of channels (default: 2)
  • -mdns - Enable mDNS advertisement (default: true)

Key features demonstrated

  1. Simple setup - Just create a source and start the server
  2. Test tone generation - Built-in test tone for easy testing
  3. Automatic client handling - Clients are managed automatically
  4. Multi-codec support - Automatically negotiates best codec per client
  5. mDNS discovery - Clients can find the server automatically

Code highlights

// Create audio source (440Hz test tone)
source := sendspin.NewTestTone(192000, 2)

// Create and start server
config := sendspin.ServerConfig{
    Port:       8927,
    Name:       "My Server",
    Source:     source,
    EnableMDNS: true,
}

server, _ := sendspin.NewServer(config)
server.Start()

Testing

Start the server:

./basic-server

In another terminal, connect a player:

cd ../..
go run . -server localhost:8927

You should hear a 440Hz tone (A4 note) playing.

Next steps

  • See examples/custom-source/ for implementing custom audio sources (files, streams, etc.)
  • Check out the server CLI (cmd/sendspin-server/) for a full-featured server with TUI
  • Modify the test tone frequency or add multiple frequencies for testing