增加时间处理组件
This commit is contained in:
@ -13,7 +13,7 @@ module.exports = {
|
||||
},
|
||||
sse: {
|
||||
heartbeatInterval: 15000, // 15秒
|
||||
allowedOrigins: process.env.ALLOWED_ORIGINS?.split(',') || ['http://localhost:3001']
|
||||
allowedOrigins: '*', //process.env.ALLOWED_ORIGINS?.split(',') || ['http://localhost:3001']
|
||||
},
|
||||
rateLimit: {
|
||||
windowMs: 15 * 60 * 1000, // 15分钟
|
||||
|
25
package-lock.json
generated
25
package-lock.json
generated
@ -1,9 +1,12 @@
|
||||
{
|
||||
"name": "sse-server",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "sse-server",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"body-parser": "^2.2.0",
|
||||
"cors": "^2.8.5",
|
||||
@ -11,6 +14,7 @@
|
||||
"express-rate-limit": "^7.5.1",
|
||||
"express-sse": "^1.0.0",
|
||||
"helmet": "^8.1.0",
|
||||
"moment-timezone": "^0.6.0",
|
||||
"uuid": "^11.1.0"
|
||||
}
|
||||
},
|
||||
@ -538,6 +542,27 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/moment": {
|
||||
"version": "2.30.1",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
|
||||
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/moment-timezone": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.6.0.tgz",
|
||||
"integrity": "sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"moment": "^2.29.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
|
@ -9,6 +9,7 @@
|
||||
"express-rate-limit": "^7.5.1",
|
||||
"express-sse": "^1.0.0",
|
||||
"helmet": "^8.1.0",
|
||||
"moment-timezone": "^0.6.0",
|
||||
"uuid": "^11.1.0"
|
||||
}
|
||||
}
|
||||
|
@ -8,30 +8,33 @@
|
||||
|
||||
const express = require('express');
|
||||
const clients = require('../lib/clients');
|
||||
const moment = require('moment-timezone')
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.post('/', (req, res) => {
|
||||
const { message, clientId } = req.body;
|
||||
const {message, clientId} = req.body;
|
||||
|
||||
if (!message) {
|
||||
return res.status(400).json({ error: 'Message is required' });
|
||||
return res.status(400).json({error: 'Message is required'});
|
||||
}
|
||||
|
||||
const data = { message, time: new Date().toISOString() };
|
||||
const shanghaiTime = moment().tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss');
|
||||
|
||||
const data = {message, time: shanghaiTime};
|
||||
|
||||
if (clientId) {
|
||||
const clientRes = clients.get(clientId);
|
||||
if (!clientRes) {
|
||||
return res.status(404).json({ error: 'Client not found' });
|
||||
return res.status(404).json({error: 'Client not found'});
|
||||
}
|
||||
|
||||
clientRes.write(`data: ${JSON.stringify(data)}\n\n`);
|
||||
return res.json({ message: 'Message delivered', clientId });
|
||||
return res.json({message: 'Message delivered', clientId});
|
||||
}
|
||||
|
||||
const count = clients.broadcast(data);
|
||||
return res.json({ message: 'Message broadcasted', clients: count });
|
||||
return res.json({message: 'Message broadcasted', clients: count});
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -10,6 +10,7 @@ const express = require('express');
|
||||
const { v4: uuidV4 } = require('uuid');
|
||||
const { setupSSEHeaders } = require('../lib/sse');
|
||||
const clients = require('../lib/clients');
|
||||
const moment = require('moment-timezone');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@ -18,11 +19,13 @@ router.get('/', (req, res) => {
|
||||
|
||||
setupSSEHeaders(res);
|
||||
|
||||
const shanghaiTime = moment().tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss');
|
||||
|
||||
// 立即发送确认
|
||||
res.write(`data: ${JSON.stringify({
|
||||
status: 'connected',
|
||||
clientId,
|
||||
time: new Date().toISOString()
|
||||
time: shanghaiTime
|
||||
})}\n\n`);
|
||||
|
||||
clients.add(clientId, res);
|
||||
|
Reference in New Issue
Block a user