栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot Streaming and SSE异步处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot Streaming and SSE异步处理

    • Spring Boot Streaming and SSE异步处理
  • ResponseBodyEmitter

    • 服务器端
  • 客户端

  • SseEmitter

    • 服务器端
  • 客户端

  • StreamingResponseBody

    • 服务器端
  • 客户端

[](()Spring Boot Streaming and SSE异步处理


  • ResponseBodyEmitter

  • SseEmitter

  • StreamingResponseBody

[](()ResponseBodyEmitter


ResponseBodyEmitter 处理异步响应。

而且,它代表了许多子类的父类-我们将在下面仔细研究其中的一个。

[](()服务器端

最好将 ResponseBodyEmitter_与它自己的专用异步线程一起使用,并用_ResponseEntity_包装 (我们可以将其直接注入_发射器):

@Controller

public class ResponseBodyEmitterController {

private ExecutorService executor

= Executors.newCachedThreadPool();

@GetMapping(“/rbe”)

public ResponseEntity handleRbe() {

ResponseBodyEmitter emitter = new ResponseBodyEmitter();

executor(() -> {

try {

emitter.send(

“/rbe” + " @ " + new Date(), MediaType.TEXT_PLAIN);

emitter.complete();

} catch (Exception ex) {

emitter.completeWithError(ex);

}

});

return new ResponseEntity(emitter, HttpStatus.OK);

}

}

[](()客户端

对于客户端使用,我们可以使用简单的XHR方法并调用API端点,就像通常的AJAX操作一样:

var xhr = function(url) {

return new Promise(function(resolve, reject) {

var xmhr = new XMLHttpRequest();

//…

xmhr.open(“GET”, url, true);

xmhr.send();

//…

});

};

xhr(‘http://localhost:8080/javamvcasync/rbe’)

.then(function(success){ //… });

[](()SseEmitter


SseEmitter实际上是ResponseBodyEmitter的子类,并提供开箱即用的 其他 服务器发送事件(SSE)支持。

[](()服务器端

因此,让我们快速看一下利用此强大实体的示例控制器:

@Controller

public class SseEmitterController {

private ExecutorService nonBlockingService = Executors

.newCachedThreadPool();

@GetMapping(“/sse”)

public SseEmitter handleSse() {

SseEmitter emitter = new SseEmitter();

nonBlockingService.execute(() -> {

try {

emitter.send(“/sse” + " @ " + new Date());

// we could send more events

emitter.complete();

} catch (Exception ex) {

emitter. 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 completeWithError(ex);

}

});

return emitter;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号