Compare commits

..

No commits in common. "main" and "v0.0.6" have entirely different histories.
main ... v0.0.6

4 changed files with 18 additions and 27 deletions

View File

@ -7,7 +7,7 @@ A minimal Go WebSocket relay server with SSL support for P2P connections.
```bash ```bash
go mod tidy go mod tidy
# Configure via config.yaml (see config.yaml for options) # Configure via config.yaml (see config.yaml for options)
go run main.go --config-file=./config.yaml go run main.go
``` ```
## Configuration ## Configuration
@ -18,16 +18,16 @@ Edit `config.yaml` to configure:
## Usage ## Usage
- WebSocket endpoint: `/` - WebSocket endpoint: `/ws`
- All WebSocket messages are relayed to all connected clients - All WebSocket messages are relayed to all connected clients
## Testing ## Testing
```javascript ```javascript
// For TLS enabled (default config) // For TLS enabled (default config)
const ws = new WebSocket('wss://localhost:8443/'); const ws = new WebSocket('wss://localhost:8443/ws');
// For HTTP only // For HTTP only
// const ws = new WebSocket('ws://localhost:8443/'); // const ws = new WebSocket('ws://localhost:8443/ws');
ws.onmessage = (event) => console.log('Received:', event.data); ws.onmessage = (event) => console.log('Received:', event.data);
ws.send('Hello from client!'); ws.send('Hello from client!');
``` ```

View File

@ -4,7 +4,3 @@ server:
enabled: true enabled: true
cert_file: cert.pem cert_file: cert.pem
key_file: key.pem key_file: key.pem
metrics:
enabled: true
port: 9090

View File

@ -11,18 +11,18 @@ var (
Help: "Number of currently connected WebSocket clients", Help: "Number of currently connected WebSocket clients",
}) })
MessagesTotal = promauto.NewGauge(prometheus.GaugeOpts{ MessagesTotal = promauto.NewCounter(prometheus.CounterOpts{
Name: "websocket_message", Name: "websocket_messages_total",
Help: "Number of WebSocket messages processed", Help: "Total number of WebSocket messages processed",
}) })
ConnectionsTotal = promauto.NewGauge(prometheus.GaugeOpts{ ConnectionsTotal = promauto.NewCounter(prometheus.CounterOpts{
Name: "websocket_connection", Name: "websocket_connections_total",
Help: "Number of WebSocket connections established", Help: "Total number of WebSocket connections established",
}) })
DisconnectionsTotal = promauto.NewGauge(prometheus.GaugeOpts{ DisconnectionsTotal = promauto.NewCounter(prometheus.CounterOpts{
Name: "websocket_disconnection", Name: "websocket_disconnections_total",
Help: "Number of WebSocket disconnections", Help: "Total number of WebSocket disconnections",
}) })
) )

11
main.go
View File

@ -1,22 +1,17 @@
package main package main
import ( import (
"flag"
"fmt" "fmt"
"log" "log"
"net/http" "net/http"
"github.com/prometheus/client_golang/prometheus/promhttp"
"websocket-relay/internal/config" "websocket-relay/internal/config"
"websocket-relay/internal/hub" "websocket-relay/internal/hub"
"github.com/prometheus/client_golang/prometheus/promhttp"
) )
func main() { func main() {
configFile := flag.String("config-file", "config.yaml", "Path to configuration file") cfg, err := config.Load("config.yaml")
flag.Parse()
cfg, err := config.Load(*configFile)
if err != nil { if err != nil {
log.Fatal("Failed to load config:", err) log.Fatal("Failed to load config:", err)
} }
@ -35,7 +30,7 @@ func main() {
} }
mux := http.NewServeMux() mux := http.NewServeMux()
mux.HandleFunc("/", h.HandleWebSocket) mux.HandleFunc("/ws", h.HandleWebSocket)
addr := fmt.Sprintf(":%d", cfg.Server.Port) addr := fmt.Sprintf(":%d", cfg.Server.Port)
if cfg.Server.TLS.Enabled { if cfg.Server.TLS.Enabled {