我一直在尝试通过TLS建立WebSocket连接(因此具有加密功能)。我和大猩猩一起使用Golang。WebSocket连接被实现为初始HTTP连接,该连接已升级为WebSocket协议连接。代码是这样的:

func wsEndpoint(w http.ResponseWriter, r *http.Request) {
    // upgrade
    ws, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        //...
    }

    log.Println("Client Connected")
    err = ws.WriteMessage(1, []byte("Hi Client!"))
    if err != nil {
        //...
    }
    // listen indefinitely for new messages coming 
}

然后我们设置路由:

func main() {
    //...
    setupRoutes()
    log.Fatal(http.ListenAndServe(":8080", nil))
}

将最后一行更改为:

...http.ListenAndServeTLS(...)

所以换句话说要使用TLS建立第一个连接?从头到尾,这种方法是否足以确保通过WebSocket的整个通信的安全?我是否可以确定连接持续时间内的所有数据包传输也受TLS保护?如果没有,如何在Golang / Gorilla框架中进行设置?