首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring事件发射器停止向新连接上的以前客户端发送事件。

Spring事件发射器停止向新连接上的以前客户端发送事件。
EN

Stack Overflow用户
提问于 2017-03-17 13:22:45
回答 1查看 1.7K关注 0票数 0

我是Server-Sent-Events的新手。我有一个事件发射器,它每2秒发送一次更新(使用SseEmitter,托管在Tomcat上),我看到当我在一个新窗口中打开URL时,消息并没有被发送到前面的窗口。请看下面的图片。

这是服务器发送事件的预期行为吗?我需要向所有连接到我的流URL的客户端发送更新。我是否需要在我的应用程序或tomcat服务器上进行任何额外的配置或设置?请帮帮忙

这是控制器

代码语言:javascript
复制
@Controller
public class MySSEController {
    private final SseEmitter sseEmitter = new SseEmitter(100000l);
    private int counter = 0;

    @RequestMapping("/ssestream")
    public SseEmitter getRealTimeMessageAction() throws IOException {

        sseEmitter.send("MessageCounter : " + counter);
        return sseEmitter;
    }

    @Scheduled(fixedDelay = 2*1000)
    public void scheduledMsgEmitter() throws IOException
    {
        if(null != sseEmitter) {
            sseEmitter.send("MessageCounter : " + ++counter);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-28 01:37:18

尝试如下:

代码语言:javascript
复制
@Controller
public class MySSEController {
    private List<SseEmitter> sseEmitters = new ArrayList<>();

    private int counter = 0;

    @RequestMapping("/ssestream")
    public SseEmitter getRealTimeMessageAction() throws IOException {
        SseEmitter sseEmitter = new SseEmitter(100000l);
        sseEmitter.send("MessageCounter : " + counter);
        sseEmitters.add(sseEmitter);
        return sseEmitter;
    }

    @Scheduled(fixedDelay = 2 * 1000)
    public void scheduledMsgEmitter() {
        counter++;
        List<SseEmitter> toRemove = new ArrayList<>();

        for (SseEmitter sseEmitter : sseEmitters) {
            try {
                sseEmitter.send("MessageCounter : " + counter);
            } catch (IOException ignore) {
                toRemove.add(sseEmitter);
            }
        }

        for (SseEmitter remove : toRemove) {
            sseEmitters.remove(remove);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42858697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档