Move the SRS proxy server code from the standalone repository https://github.com/ossrs/proxy into the proxy/ directory of the main SRS repo. Also update build instructions in origin-cluster.md.
68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
# Codebase Structure
|
|
|
|
This document provides an overview of the Go codebase organization.
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
/
|
|
├── cmd/proxy-go/
|
|
│ └── main.go # Application entry point
|
|
└── internal/
|
|
├── debug/ # Go profiling support
|
|
├── env/ # Configuration management
|
|
├── errors/ # Error handling with stack traces
|
|
├── lb/ # Load balancer (memory/Redis)
|
|
├── logger/ # Logging and request tracing
|
|
├── protocol/ # Protocol servers (RTMP, HTTP, WebRTC, SRT, API)
|
|
├── rtmp/ # RTMP protocol implementation
|
|
├── signal/ # Graceful shutdown handling
|
|
├── sync/ # Concurrency utilities
|
|
├── utils/ # Common utilities
|
|
└── version/ # Version information
|
|
```
|
|
|
|
## Internal Packages
|
|
|
|
### debug
|
|
Go profiling support via pprof, controlled by `GO_PPROF` environment variable.
|
|
|
|
### env
|
|
Configuration management using environment variables. Loads `.env` file and provides defaults for all server settings.
|
|
|
|
### errors
|
|
Enhanced error handling with stack traces. Provides error wrapping and root cause extraction.
|
|
|
|
### lb
|
|
Load balancer system supporting both single-proxy (memory-based) and multi-proxy (Redis-based) deployments.
|
|
- `lb.go` - Core interfaces and types
|
|
- `mem.go` - Memory-based load balancer
|
|
- `redis.go` - Redis-based load balancer
|
|
- `debug.go` - Default backend for testing
|
|
|
|
### logger
|
|
Structured logging with context-based request tracing. Provides log levels: Verbose, Debug, Warning, Error.
|
|
|
|
### protocol
|
|
Protocol server implementations for all supported streaming protocols:
|
|
- `rtmp.go` - RTMP protocol stack
|
|
- `http.go` - HTTP streaming (HLS, HTTP-FLV, HTTP-TS)
|
|
- `rtc.go` - WebRTC server (WHIP/WHEP)
|
|
- `srt.go` - SRT server
|
|
- `api.go` - HTTP API server
|
|
|
|
### rtmp
|
|
Low-level RTMP protocol implementation including handshake and AMF0 serialization.
|
|
|
|
### signal
|
|
Graceful shutdown coordination. Catches SIGINT/SIGTERM and implements timeout-based shutdown.
|
|
|
|
### sync
|
|
Thread-safe generic Map wrapper around `sync.Map` for connection tracking and caching.
|
|
|
|
### utils
|
|
Common utility functions for HTTP responses, JSON marshaling, and parsing.
|
|
|
|
### version
|
|
Version information and server identification.
|