我正在努力确认标准 SSE 方法是否仅适用于定时间隔,即它不是事件驱动的,它只是在更新客户端之前按间隔轮询自身。
我能找到的每个示例/帖子/视频都在 SSE EventSource 的处理程序中显示了 setInterval/setTimeout。但是,我的后端服务器知道它何时更新,我只需要使用该事件将更新推送到前端。
我知道我一定错过了一些简单的东西。
您可以随时发送给客户,例如,
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`);
});
};