SpringMVC的SseEmitter實時推送方式
更新時間:2026年03月30日 09:05:28 作者:楠~楓
SseEmitter是SpringMVC提供的一種技術,可以實現(xiàn)服務端向客戶端實時推送數(shù)據(jù)的功能,在Controller中提供一個接口返回SseEmitter對象,發(fā)送數(shù)據(jù)可以在另一個接口調用其send方法,SpringBoot已經(jīng)集成此功能
SseEmitter簡介
SpringMVC提供的一種技術,可以實現(xiàn)服務端向客戶端實時推送數(shù)據(jù)的功能
用法
在Contorller中提供一個接口,返回SseEmitter對象,發(fā)送數(shù)據(jù)可以在另一個接口調用其send方法發(fā)送數(shù)據(jù),SpringBoot已經(jīng)集成這個功能
用法示例:
@RestController
public class SseEmitterTestController {
private SseEmitter sseEmitter;
/**
* 步驟一:請求后瀏覽器會阻塞,直到close后結束阻塞
*/
@RequestMapping("start")
public SseEmitter start() {
//默認是30s超時,設置為0L永不超時
sseEmitter=new SseEmitter(0L);
//將這個對象返回
return sseEmitter;
}
/**
* 步驟二:請求后會像瀏覽器發(fā)送數(shù)據(jù),可以多次請求
*/
@RequestMapping("send")
public String send() {
if (sseEmitter!=null){
try {
sseEmitter.send(new Date());
return "send seccuss";
} catch (IOException e) {
e.printStackTrace();
}
}
return "send fail";
}
/**
* 步驟三:請求后會結束對瀏覽器的阻塞,結束數(shù)據(jù)發(fā)送
*/
@RequestMapping("close")
public String close() {
if (sseEmitter!=null){
sseEmitter.complete();
return "close";
}
return "close fail,sseEmitter is null";
}
}
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible
這牌你文章主要給大家分享解決Java變異出現(xiàn)錯誤,具體的饑餓絕方案請看下面文章的內容,需要的朋友可以參考一下,希望能幫助到你2021-09-09
springboot使用shiro-整合redis作為緩存的操作
這篇文章主要介紹了springboot使用shiro-整合redis作為緩存的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
org.springframework.beans.BeanInstantiationException異常解決
本文主要介紹了org.springframework.beans.BeanInstantiationException異常解決,大多數(shù)情況下,這個異常是由于簡單的配置錯誤或者代碼問題導致的,下面就來具體解決一下2024-03-03

