我使用AsyncContext异步处理客户端请求。在我的服务器端代码中,我正在做这样的事情。
- >在Controller类中,我正在检索AsyncContext并存储它。
@RequestMapping(method = RequestMethod.GET, value = "/xyz/")
public void getXyz(HttpServletRequest request, HttpServletResponse response) {
final AsyncContext asyncContext = request.startAsync(request, response);
map.put("xyz", asyncContext);
- >我的应用程序中的threadPool从MQ接收消息并在asyncContext上写入数据 //将消息转换为JSON字符串然后 //从地图检索上下文
asyncContext.getResponse().getOutputStream().print(strMessage);
asyncContext.getResponse().getOutputStream().flush();
如果这是最后一个块或者是异常
asyncContext.complete();
现在,问题或行为是我的浏览器正在进行GET调用,当服务器在输出流上写入时没有接收到数据,而只是在服务器执行时获取
asyncContext.complete();
我希望我的浏览器在输出流(并刷新)后立即接收数据,而不是等到asyncContext完成,因为它可能永远不会被调用。
寻找大气广播公司或HTML5 SSE等解决方案,但只使用AyncContext