@RequestMapping(value = "/sse/{userId}", produces = "text/event-stream;charset=UTF-8")
public SseEmitter sse(@PathVariable String userId) {
//通过userId作为key,为后面的定向推送
SseEmitter sseEmitter = new SseEmitter(10000000L);
sseMap.put(userId, sseEmitter);
//region todo 示例推送
new Thread() {
@Override
public void run() {
new Timer().schedule(new TimerTask() {
private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
@Override
public void run() {
HashMap<String, String> data = new HashMap<>();
data.put("time", format.format(new Date()));
for (String s : sseMap.keySet()) {
sseMap.get(s).send(MapperUtil.toJson(data), MediaType.APPLICATION_JSON);//这边是以JSON形式推送给客户端
}
}
}, 1000, 3000);
}
}.start();
//endregion
return sseEmitter;
}