是否应该为来自服务器的异步响应更改 HTTP 客户端?

Should the HTTP client be changed for Asynchronous responses from the server?

最近我配置了我的 Servlet 以使用以下配置进行异步处理

<async-supported>true</async-supported>

我的问题是,此更改对 HTTP 客户端是否透明?我的客户端不是网络浏览器。它是一个发出 HTTP 请求的硬件设备,我无法控制客户端功能。

P.S - 这个问题是因为我最近听说了异步 http 客户端。

简单的答案是否定的。

提供新的异步机制只是为了更好地利用服务器机器上的线程。就客户端而言,没有变化。

即使在早期,如果您使用 AJAX,客户端也会使用回调以异步方式处理请求。因此,异步客户端是第一位的。服务器现在也可以使用异步机制,如果它想在接收来自客户端的http请求时进行耗时操作。

请注意,即使在异步世界中,服务器也不能做太耗时的事情,因为客户端可能不会等待服务器响应那么久。

有关异步如何在服务器端工作的信息,请参见此处 link: I don't understand Async support in servlets 3.0 API

编辑:

借助异步支持,由于服务器现在可以暂停响应并执行其他有用的操作,因此您可以设计客户端请求服务器 "respond later when something interesting happens" 的客户端-服务器应用程序。因此,AJAX 请求可以打开 5 到 10 分钟,如果在此期间发生某些事情,服务器可以响应(并关闭连接)。在这 5 分钟 window 期间,服务器中不会​​有线程被阻塞。

换句话说,人们可以设计基于延迟响应服务器的应用程序API。以下是有关此技术的更多信息:Ajax Long Polling