package org.springframework.issues;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@Controller
public class SseController {
private static Logger logger = LoggerFactory.getLogger(SseController.class);
@RequestMapping(path = "/sse", method = RequestMethod.GET)
public SseEmitter getEvents() {
SseEmitter emitter = new SseEmitter();
// emitter.onTimeout(new Runnable() {
// @Override
// public void run() {
// System.out.println("hello timeout");
// emitter.complete();
// }
// });
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> {
try {
emitter.send(SseEmitter.event().data("Thread writing: " + Thread.currentThread()).name("ping"));
}
catch (Throwable e) {
logger.error("In catch: {}", e.getMessage());
}
} , 1000, 1000, TimeUnit.MILLISECONDS);
return emitter;
}
}