0

我的任务是创建一个模块,该模块将包含一个服务器,将向该服务器发送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 或其他相关库,或者作为替代方案使用Sockets 实现我自己的服务器。

到目前为止,找不到合适的库,恐怕需要使用套接字进入较低级别。感谢您对图书馆的任何帮助。

4

0 回答 0