我试图用Spring 4(tomcat 7,servlet-api 3.0.1)发送服务器发送的事件.
问题是Events在调用方法发送后我没有发送.它们都是在超时之后同时(具有相同的时间戳)到达客户端SseEmitter,带有EventSource错误事件.然后客户端正在尝试重新连接.知道发生了什么事吗?
我创建了一个简单的服务:
@RequestMapping(value = "subscribe", method = RequestMethod.GET)
public SseEmitter subscribe () throws IOException {
final SseEmitter emitter = new SseEmitter();
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
try {
emitter.send(SseEmitter.event().data("Thread writing: " + Thread.currentThread()).name("ping"));
} catch (Exception e) {
}
}
} , 1000, 1000, TimeUnit.MILLISECONDS);
return emitter;
}
Run Code Online (Sandbox Code Playgroud)
使用客户代码:
sse = new EventSource(urlBuilder(base, url));
sse.addEventListener('ping', function (event) {
dfd.notify(event);
});
sse.addEventListener('message', function(event){
dfd.notify(event);
});
sse.addEventListener('close', function(event){
dfd.notify(event); …Run Code Online (Sandbox Code Playgroud)