Hijack
Hijack 含义是 劫持
, 在 Golang HTTP 语境, 是劫持 HTTP 连接.
Golang 中 http.Hijacker
是一个 interface, 默认 HTTP/1.x ResponseWriters 实现了该 interface, HTTP/2 则没有.
官方文档及示例见: https://golang.org/pkg/net/http/#Hijacker
劫持结果: HTTP Server 不再维护 HTTP连接对应的TCP socket Connection, 由调用者维护.
使用场景
HTTP连接建立后, 如果开发者希望接管对应的TCP连接, 则使用 Hijack 提供的能力. 典型的场景是 Websocket.
Websocket
Websocket 连接建立是通过HTTP协议, 连接建立完成后升级为 Websocket 二进制协议.
HTTP(S) Proxy
特别是HTTPS Proxy中, 客户端通过HTTP协议与Proxy建立连接, Proxy 连接服务后, 交换客户端与服务的二进制数据.