服务器无时间间隔发送事件

问题描述 投票:0回答:1

我正在努力确认标准 SSE 方法是否仅适用于定时间隔,即它不是事件驱动的,它只是在更新客户端之前按间隔轮询自身。

我能找到的每个示例/帖子/视频都在 SSE EventSource 的处理程序中显示了 setInterval/setTimeout。但是,我的后端服务器知道它何时更新,我只需要使用该事件将更新推送到前端。

我知道我一定错过了一些简单的东西。

server-sent-events
1个回答
0
投票

您可以随时发送给客户,例如,

let clients = [];

// SSE endpoint to connect clients
app.get('/events', (req, res) => {
    // Set headers for SSE
    res.setHeader('Content-Type', 'text/event-stream');
    res.setHeader('Cache-Control', 'no-cache');
    res.setHeader('Connection', 'keep-alive');

    // Add client to the list
    clients.push(res);

    // Clean up when the connection is closed
    req.on('close', () => {
        clients = clients.filter(client => client !== res);
        res.end();
    });
});

// Send an event to all clients
const sendToClients = (data) => {
    clients.forEach(client => {
        client.write(`data: ${JSON.stringify(data)}\n\n`);
    });
};
© www.soinside.com 2019 - 2024. All rights reserved.