SpringMVC的SseEmitter实时推送
SseEmitter简介:SpringMVC提供的一种技术,可以实现服务端向客户端实时推送数据的功能
用法:在Contorller中提供一个接口,返回SseEmitter对象,发送数据可以在另一个接口调用其send方法发送数据,SpringBoot已经集成这个功能
用法示例:
@RestController
public class SseEmitterTestController {
private SseEmitter sseEmitter;
/**
* 步骤一:请求后浏览器会阻塞,直到close后结束阻塞
*/
@RequestMapping("start")
public SseEmitter start() {
//默认是30s超时,设置为0L永不超时
sseEmitter=new SseEmitter(0L);
//将这个对象返回
return sseEmitter;
}
/**
* 步骤二:请求后会像浏览器发送数据,可以多次请求
*/
@RequestMapping("send")
public String send() {
if (sseEmitter!=null){
try {
sseEmitter.send(new Date());
return "send seccuss";
} catch (IOException e) {
e.printStackTrace();
}
}
return "send fail";
}
/**
* 步骤三:请求后会结束对浏览器的阻塞,结束数据发送
*/
@RequestMapping("close")
public String close() {
if (sseEmitter!=null){
sseEmitter.complete();
return "close";
}
return "close fail,sseEmitter is null";
}
}