blob: 29a40f5391dec4ed7781baa43c2045dcf75976cc [file] [log] [blame]
// +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 = `
<html>
<head>
<link rel="stylesheet" href="/style.css">
<title>HTTP2 push test</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
`
css = `
h1 {
color: red;
text-align: center;
text-shadow: green 0 0 40px;
font-size: 10em;
}
`
)