Go http pkg 提供一个Hijacker接口(interface),任何人都可以告诉我什么时候应该使用它。
我查看评论,在 Hijack 调用让调用者接管连接后,HTTP 服务器库将不会对该连接执行任何其他操作。
我理解它是用来在一个端口内同时支持http请求和普通tcp交互的。这样对吗?它还有其他好处吗?
最佳答案
这意味着你接管了TCP连接的控制权。 TCP 是通用传输协议(protocol),而 HTTP 是 TCP 之上的应用协议(protocol)。 OSI seven layer model将 TCP 描述为第 4 层,将 HTTP 描述为第 7 层。
如果您需要实现不同的应用程序协议(protocol),这是劫持的一个用例。
或者如果您需要做一些专门针对 HTTP 的事情,比如防止保持事件连接,那是另一个用例。
Google 的 SPDY 是替代 Web 应用程序协议(protocol)的示例。 .这也是您劫持现有 HTTP 连接而不是直接创建 TCP 连接的一个很好的理由。对于 SPDY,浏览器首先会发出一个包含“接受” header 的 HTTP 请求,表明它也能够理解 SPDY。所以现在您可以劫持连接并实现 SPDY 而不是 HTTP。
关于http - 使用 http 劫持者有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334265/