小编Tim*_*kiy的帖子

Spring sseEmitter,在调用方法发送后不会立即发送事件

我试图用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)

java spring spring-mvc server-sent-events

8
推荐指数
1
解决办法
4243
查看次数

标签 统计

java ×1

server-sent-events ×1

spring ×1

spring-mvc ×1