猿问

在 golang net/http 中处理 TLSNextProto 的正确方法是什么?

使用 golang 的net/http包和 SPDY。有一点让我很困惑:


该*tls.Conn的 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)

    }

}


繁花不似锦
浏览 320回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答