// Command webui is a tiny static file server for the StreamHub browser SPA. // // It serves the existing Client/udpstreamer/static directory; the SPA talks // WebSocket directly to the C++ StreamHub (pass ?hub=host:8090 in the URL). // // Usage: // // webui -addr :8080 -static ../udpstreamer/static package main import ( "flag" "fmt" "log" "net/http" ) var buildVersion = "streamhub-webui-dev" func main() { addr := flag.String("addr", ":8080", "HTTP listen address") static := flag.String("static", "../udpstreamer/static", "directory with the SPA files") hub := flag.String("hub", "localhost:8090", "StreamHub WebSocket host:port the SPA should connect to") flag.Parse() http.Handle("/", http.FileServer(http.Dir(*static))) http.HandleFunc("/version", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, buildVersion) }) // The SPA fetches /hub at startup to discover the StreamHub address, so // plain http://localhost:8080/ works without a ?hub= query parameter. http.HandleFunc("/hub", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, *hub) }) log.Printf("StreamHub WebUI listening on %s (static=%s, hub=%s)", *addr, *static, *hub) log.Printf("open http://localhost%s/", *addr) if err := http.ListenAndServe(*addr, nil); err != nil { log.Fatalf("http: %v", err) } }