我的任务是创建一个模块,该模块将包含一个服务器,将向该服务器发送HTTP
请求。对于每个这样的请求,HttpConnection
(或Socket
)应该由http客户端获取并重用,以使用相同的连接发回请求。
相反的事情将在另一边完成 - 重用从 http 客户端(启动通信)到 http 服务器的连接,它将使用该连接来侦听传入的请求。
作为服务器和与服务器相关的库,我不拘泥于任何技术,可以使用最适合的任何技术。
如果我在 SpringBoot 控制器的 GET 方法中,我需要这样的东西:
@GET
@Path("/{switchConnection}")
void switchConnection(@RequestBody HttpServletRequest request) {
FansyServerConnection srvConn = request.getConnection();
HttpURLConnection clientConn = convertToClinetConn(srvConn);
clientConn.setRequestMethod("GET");
// start sending requests with clientConn
}
我在 Go 中看到过这样的实现,它实际上是一些代码行。有一种Hijack()
方法可以从服务器获取连接并在 http 客户端中重用它。
该模块将在 SpringBoot 内部运行,作为 Web 应用程序的一部分,需要与第三方应用程序通信。
我有两种选择:使用一些标准库,如 Apachehttpcomponents
或 Java 11HttpClient
或其他相关库,或者作为替代方案使用Socket
s 实现我自己的服务器。
到目前为止,找不到合适的库,恐怕需要使用套接字进入较低级别。感谢您对图书馆的任何帮助。