37 lines
883 B
JavaScript
37 lines
883 B
JavaScript
/**
|
|
* @file SSE流路由处理器
|
|
* @author Yk <yk_9001@icloud.com>
|
|
* @createdAt 2025-07-01
|
|
* @lastModifiedAt 2025-07-01
|
|
* @description 处理SSE连接建立和维持
|
|
*/
|
|
|
|
const express = require('express');
|
|
const { v4: uuidV4 } = require('uuid');
|
|
const { setupSSEHeaders } = require('../lib/sse');
|
|
const clients = require('../lib/clients');
|
|
const timestamp = require('../utils/timeFormatter');
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', (req, res) => {
|
|
const clientId = req.query.clientId || uuidV4();
|
|
|
|
setupSSEHeaders(res);
|
|
|
|
// 立即发送确认
|
|
res.write(`data: ${JSON.stringify({
|
|
status: 'connected',
|
|
clientId,
|
|
clientCount: clients.size(),
|
|
time: timestamp.formatTime()
|
|
})}\n\n`);
|
|
|
|
clients.add(clientId, res);
|
|
|
|
req.on('close', () => {
|
|
clients.remove(clientId);
|
|
});
|
|
});
|
|
|
|
module.exports = router; |