Can somebody please provide me an example for spring boot server side events?
Basically I need to push server side events to browser. I\'m using angular 2 and sprin
The Answer from Pratap A.K is great. But to keep it a little bit cleaner, you shoud create a NotificationService which implements a Interface. Like this:
NotificationServiceImpl.java
public class NotificationServiceImpl implements NotificationService {
public static final List emitters = Collections.synchronizedList(new ArrayList<>());
@Override
public SseEmitter initSseEmitters() {
SseEmitter emitter = new SseEmitter();
emitters.add(emitter);
emitter.onCompletion(() -> emitters.remove(emitter));
return emitter;
}
@Override
public void sendSseEventsToUI(WebSource notification) {
List sseEmitterListToRemove = new ArrayList<>();
this.emitters.forEach((SseEmitter emitter) -> {
try {
emitter.send(notification, MediaType.APPLICATION_JSON);
} catch (IOException e) {
emitter.complete();
sseEmitterListToRemove.add(emitter);
e.printStackTrace();
}
});
this.emitters.removeAll(sseEmitterListToRemove);
}
}
NotificationService.java
public interface NotificationService {
public SseEmitter initSseEmitters();
public void sendSseEventsToUI(WebSource notification);
}
SSEController.java
@RestController
@RequestMapping("/mystream")
public class SSEController {
@Autowired
NotificationServiceImpl INotificationServiceImpl;
@CrossOrigin
@RequestMapping(path = "/streamsource", method = RequestMethod.GET)
public SseEmitter stream() throws IOException {
return INotificationServiceImpl.initSseEmitters();
}
}
Best regards