在end之后发送Nodejs SSE

问题描述

我在节点中没有收到来自SSE的回复。一次调用res.end()后发送所有数据。

我从中接收数据的功能如下:

static async getRTUpdates(req: Request,res: Response) {
    res.setHeader('Content-Type','text/event-stream');
    res.setHeader('Cache-Control','no-cache');
    res.setHeader('Connection','keep-alive');
    res.flushHeaders();

    let counter = 0;
    let interValID = setInterval(() => {
        counter++;
        if (counter >= 10) {
            clearInterval(interValID);
            res.end(); // terminates SSE session
            return;
        }
        res.write(`data: ${JSON.stringify({ num: counter })}\n\n`);
    },1000);

    res.on('close',() => {
        clearInterval(interValID);
        res.end();
    });
}

然后,当我从邮递员连接到此功能时,在10秒钟内没有任何反应,在结束连接后,我立即接收到所有数据。如何定期接收数据?当未设置Connection:'keep-alive'标头时,我会期望出现此问题,但是既然如此,我不知道可能是什么问题。我也只在本地运行它,而不是在生产环境中运行,因此它不会通过Nginx运行。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)