当服务器响应需要很长时间时,如何使客户端不断开

时间:2018-05-03 12:50:57

标签: java angularjs rest http

我有一个带有REST-API的Java后端和一个Angularjs前端。用户可以使用前端从后端请求信息。发生这种情况时,后端会动态生成文件并将其发送到前端。到目前为止一切都很好。

当用户请求大量信息时会出现问题。这使得生成文件的时间过长,以至于前端超时并中止连接。

有没有办法让客户放心响应实际上会发生,或者只增加这个端点的超时限制?或者,服务器是否有办法发送两个响应,一个是在收到请求后立即发送的,一个是在生成文件后发送的?

API端点如下所示:

@Path("download")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Consumes(MediaType.APPLICATION_JSON)
public Response download() {

    StreamingOutput stream = //stream containing file

    return Response.ok(stream)
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"download.xlsx\"")
        .build();
}

前端通过window.open(download url, '_blank', '')发出请求(文件内容取决于用户以前的输入)。

0 个答案:

没有答案