102 lines
2.2 KiB
Markdown
102 lines
2.2 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
cd examples/basic-server
|
|
go build
|
|
```
|
|
|
|
## Running
|
|
|
|
Start server with defaults (192kHz/24-bit stereo):
|
|
|
|
```bash
|
|
./basic-server
|
|
```
|
|
|
|
Start on a different port:
|
|
|
|
```bash
|
|
./basic-server -port 9000
|
|
```
|
|
|
|
Configure sample rate and channels:
|
|
|
|
```bash
|
|
./basic-server -rate 48000 -channels 2
|
|
```
|
|
|
|
Disable mDNS:
|
|
|
|
```bash
|
|
./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
|
|
|
|
```go
|
|
// 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:
|
|
|
|
```bash
|
|
./basic-server
|
|
```
|
|
|
|
In another terminal, connect a player:
|
|
|
|
```bash
|
|
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
|