/** * @file 处理SSE请求 * @author Yk * @createdAt 2025-07-01 * @lastModifiedAt 2025-07-01 * @description 维护链接的客户端 */ // 引入客户端管理模块,用于维护连接的客户端 const clients = require('./clients'); /** * 设置 SSE(Server-Sent Events)响应头,确保客户端能够正确接收事件流 * @param {Object} res - HTTP 响应对象 */ function setupSSEHeaders(res) { res.setHeader('Content-Type', 'text/event-stream'); // 指定内容类型为事件流 res.setHeader('Cache-Control', 'no-cache'); // 禁止缓存 res.setHeader('Connection', 'keep-alive'); // 保持长连接 res.flushHeaders(); // 立即发送响应头 } /** * 发送心跳事件给所有连接的客户端,用于保持连接活跃并传递服务器时间 * @returns {void} */ function sendHeartbeat() { const data = { event: 'heartbeat', // 事件类型为 heartbeat time: new Date().toISOString() // 当前时间的 ISO 字符串格式 }; return clients.broadcast(data); // 广播给所有连接的客户端 } // 导出函数,供其他模块使用 module.exports = { setupSSEHeaders, sendHeartbeat };