Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring Boot应用程序中实现长轮询REST端点?_Java_Rest_Spring Mvc_Spring Boot_Long Polling - Fatal编程技术网

Java 如何在Spring Boot应用程序中实现长轮询REST端点?

Java 如何在Spring Boot应用程序中实现长轮询REST端点?,java,rest,spring-mvc,spring-boot,long-polling,Java,Rest,Spring Mvc,Spring Boot,Long Polling,您是否愿意分享最新的手册,或者在此解释如何使用最新的Spring(Spring Boot)实现REST长轮询端点 我发现的所有东西都已经过时了,是几年前发行的 所以,我提出了一个问题:长期投票仍然是一个好方法吗?我知道它在chess.com中使用对于长拉请求,您可以使用延迟结果。当您返回DeferredResult响应时,请求线程将是空闲的,此请求由工作线程处理。以下是一个例子: @GetMapping("/test") DeferredResult<String> test

您是否愿意分享最新的手册,或者在此解释如何使用最新的Spring(Spring Boot)实现REST长轮询端点

我发现的所有东西都已经过时了,是几年前发行的


所以,我提出了一个问题:长期投票仍然是一个好方法吗?我知道它在chess.com中使用

对于长拉请求,您可以使用
延迟结果
。当您返回DeferredResult响应时,请求线程将是空闲的,此请求由工作线程处理。以下是一个例子:

@GetMapping("/test")
    DeferredResult<String> test(){
        Long timeOutInMilliSec = 100000L;
        String timeOutResp = "Time Out.";
        DeferredResult<String> deferredResult = new DeferredResult<>(timeOutInMilliSec,timeOutResp);
        CompletableFuture.runAsync(()->{
            try {
                //Long pooling task;If task is not completed within 100 sec timeout response retrun for this request
                TimeUnit.SECONDS.sleep(10);
                //set result after completing task to return response to client
                deferredResult.setResult("Task Finished");
            }catch (Exception ex){
            }
        });
        return deferredResult;
    }
@GetMapping(“/test”)
延迟结果测试(){
长时间输出毫秒=100000L;
字符串timeOutResp=“超时。”;
DeferredResult DeferredResult=新的DeferredResult(timeOutInMilliSec,timeOutResp);
CompletableFuture.runAsync(()->{
试一试{
//长池任务;如果任务未在100秒内完成,则超时响应重新运行此请求
时间单位。秒。睡眠(10);
//在完成任务后设置结果以将响应返回给客户端
deferredResult.setResult(“任务完成”);
}捕获(例外情况除外){
}
});
返回延迟结果;
}
在此请求中,等待10秒后给出响应。如果您等待超过100秒,您将得到超时响应