如何让代理服务器的客户端保持活动状态?

时间:2021-07-08 00:31:30

标签: proxy netty

我想让代理服务器的客户端保持活动状态。因此,我不希望代理客户端每次都进行 tcp 关闭握手。

请看this example in netty

向此示例添加 keepAlive 选项似乎无法正常工作。因为它在每次服务器收到请求时都会创建一个客户端并进行连接,并在响应到达时关闭客户端。

那我怎样才能让我的代理客户端保持活动状态?是否有任何参考/示例?

1 个答案:

答案 0 :(得分:0)

使用 SO_KEEPALIVE 套接字选项并不意味着服务器(或连接中的其他对等方)应该忽略关闭连接的显式请求。它有助于像

这样的情况
  • 空闲会话超时/由于不活动而被另一端杀死
  • 空闲或长时间运行的请求在经过一段时间后(例如,1 小时,用于资源清理)被中间的防火墙断开。

如果客户端的逻辑不是为不同的请求重用相同的套接字(即,如果它的应用程序逻辑为每个请求使用一个新的套接字),那么您在代理上无能为力。

同样的论点也适用于代理的“后端”端。如果您要代理的服务器不允许重新使用套接字,并且在提供请求后显式关闭连接,那也不会如您所愿。