玩弄 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)
}
}