【发布时间】:2020-08-03 02:21:10
【问题描述】:
我一直在尝试通过 TLS 建立 WebSocket 连接(因此使用加密)。我将 Golang 与 Gorilla 一起使用。 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 框架中设置?
【问题讨论】:
标签: go ssl https websocket gorilla