diff --git a/config/index.js b/config/index.js index 4712a17..2e79851 100644 --- a/config/index.js +++ b/config/index.js @@ -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分钟 diff --git a/package-lock.json b/package-lock.json index e07466c..2844f61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 04689b2..bb6393e 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/routes/push.js b/routes/push.js index 1e1e868..8af0962 100644 --- a/routes/push.js +++ b/routes/push.js @@ -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; \ No newline at end of file diff --git a/routes/stream.js b/routes/stream.js index 42a5f44..6b5ac2f 100644 --- a/routes/stream.js +++ b/routes/stream.js @@ -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);