diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..f12df423a752b9ff7208a8b2fa41294dca3de31f --- /dev/null +++ b/index.html @@ -0,0 +1,21 @@ +<!doctype html> +<html> + <head> + <meta charset="utf-8"/> + <title>WebSocket image server test client</title> + <script> + document.addEventListener('DOMContentLoaded', () => { + var img = document.getElementById("jpeg"); + var ws = new WebSocket("ws://{{.}}/video"); + ws.onmessage = (event) => { + img.src = URL.createObjectURL(event.data); + }; + }); + </script> + </head> + <body> + <h1>WebSocket image server test client</h1> + + <img src="" id="jpeg" /> + </body> +</html> diff --git a/server.go b/server.go index 8b51a551f363f5cfd29e94c9b3301c5e9065bd9c..0cd5f3e5e08a00bc9f61c211023e6b9bb77ecba9 100644 --- a/server.go +++ b/server.go @@ -2,6 +2,7 @@ package main import ( "flag" + "html/template" "io" "log" "net/http" @@ -26,6 +27,7 @@ func jpeg(w http.ResponseWriter, r *http.Request) { log.Print("upgrade: ", err) return } + defer log.Printf("closing websocket with %v", c.RemoteAddr()) defer c.Close() log.Printf("initialised websocket with %v", c.RemoteAddr()) @@ -50,6 +52,18 @@ func main() { } f.Close() + index, err := template.ParseFiles("index.html") + if err != nil { + log.Fatal(err) + } + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + err = index.Execute(w, r.Host) + if err != nil { + log.Print(err) + } + }) + http.HandleFunc("/jpeg", jpeg) log.Printf("listening on %s", *listen)