go http pkg提供Hijacker界面,任何人都可以告诉我应该何时使用它。
我检查注释,在Hijack调用允许调用者接管连接后,HTTP服务器库将不会对连接执行任何其他操作。
我理解它,因为它用于在一个端口内支持http请求和公共tcp交互。这样对吗?它有任何其他好处。
答案 0 :(得分:13)
这意味着您接管了TCP连接的控制权。 TCP是通用传输协议,而HTTP是TCP之上的应用程序协议。 OSI seven layer model将TCP描述为第4层,HTTP是第7层。
如果您需要实现不同的应用程序协议,这是一个用于劫持的用例。
或者如果你需要做一些专门用HTTP的事情,比如防止保持活动连接,这是另一个用例。
另一种Web应用程序协议的示例是Google的SPDY。这也是您可能劫持现有HTTP连接的一个很好的理由,而不是直接创建TCP连接。对于SPDY,浏览器首先会发出包含“accept”标头的HTTP请求,表明它也能够理解SPDY。所以现在你可以劫持连接并实现SPDY而不是HTTP。