// +build ignore,OMIT package main import ( "fmt" "go/build" "log" "net/http" "path/filepath" ) var cert, key string func init() { pkg, err := build.Import("golang.org/x/talks/content/2017/state-of-go/stdlib/http2", ".", build.FindOnly) if err != nil { log.Fatal(err) } cert = filepath.Join(pkg.Dir, "cert.pem") key = filepath.Join(pkg.Dir, "key.pem") } func main() { http.HandleFunc("/", rootHandler) http.HandleFunc("/style.css", cssHandler) go func() { log.Fatal(http.ListenAndServeTLS("127.0.0.1:8081", cert, key, nil)) }() log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil)) } func rootHandler(w http.ResponseWriter, r *http.Request) { if p, ok := w.(http.Pusher); ok { // HL err := p.Push("/style.css", nil) // HL if err != nil { log.Printf("could not push: %v", err) } } fmt.Fprintln(w, html) } func cssHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, css) } const ( html = ` HTTP2 push test

Hello

` css = ` h1 { color: red; text-align: center; text-shadow: green 0 0 40px; font-size: 10em; } ` )