golangのnet/http
パッケージとSPDYで遊んでいます。何かが本当に私を混乱させています:
*tls.Conn
of TLSNextProto
関数がまったく読み取れません。読み取りを試みると、「接続がピアによってリセットされました」というエラーが発生します。
次のプログラムを実行し、https://localhost:8080/
SPDY を有効にした Chrome を使用してアクセスします。
TLS 接続オブジェクトを間違った方法で使用していませんか? 助けてください。
package main
import (
"crypto/tls"
"log"
"net/http"
)
func main() {
server := &http.Server{
Addr: ":8080",
TLSConfig: &tls.Config{
NextProtos: []string{"spdy/3"},
},
TLSNextProto: map[string]func(*http.Server, *tls.Conn, http.Handler){
"spdy/3": func(s *http.Server, conn *tls.Conn, h http.Handler) {
buf := make([]byte, 1)
if n, err := conn.Read(buf); err != nil {
log.Panicf("%v|%v\n", n, err)
}
},
},
}
err := server.ListenAndServeTLS("/path/to/host.cert", "/path/to/host.key")
if err != nil {
log.Fatal(err)
}
}