package main import ( "embed" "flag" "fmt" "io/fs" "log" "net/http" ) // version is set at build time via -ldflags "-X main.version=..." var version = "dev" //go:embed static var staticFiles embed.FS func main() { streamerAddr := flag.String("streamer", "127.0.0.1:44500", "MARTe2 UDP streamer address (host:port)") listenAddr := flag.String("listen", ":8080", "HTTP listen address") clientPort := flag.Int("clientport", 44900, "Local UDP port to bind for streamer data") flag.Parse() hub := NewHub() go hub.Run() udpClient := NewUDPClient(*streamerAddr, *clientPort, hub) go udpClient.Run() // Serve the embedded static/ directory (index.html, style.css, app.js). sub, err := fs.Sub(staticFiles, "static") if err != nil { log.Fatalf("static sub-fs: %v", err) } http.Handle("/", http.FileServer(http.FS(sub))) http.HandleFunc("/ws", hub.HandleWebSocket) http.HandleFunc("/version", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, version) }) log.Printf("WebUI listening on %s (streamer=%s, local UDP port=%d, version=%s)", *listenAddr, *streamerAddr, *clientPort, version) if err := http.ListenAndServe(*listenAddr, nil); err != nil { log.Fatalf("http: %v", err) } }