server.js
1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/stream', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有源访问
res.flushHeaders();
// 函数用于发送SSE消息
const sendSseMessage = (id, data) => {
const message = `id: ${id}\ndata:${data}\n\n`;
res.write(message);
};
let messageId = 0;
// 模拟推送数据
const intervalId = setInterval(() => {
const dataObject = {
message: `Message ${messageId}`,
details: {
//timestamp: new Date().toISOString(),
count: messageId
},
items: Array.from({ length: 5 }, (_, index) => ({
id: index + 1,
eqname: `Item ${index + 1}`,
materialCode: `F${105 + index}`,
quantity: Math.floor(Math.random() * 1000) // 生成0到999之间的随机数
}))
};
// 将对象转换为JSON字符串
const dataString = JSON.stringify(dataObject);
// 发送SSE消息
sendSseMessage(messageId, dataString);
messageId++;
}, 2000);
// 如果客户端关闭连接,清除定时器
req.on('close', () => {
clearInterval(intervalId);
});
});
// Serve static files (e.g., Vue打包后的文件)
app.use(express.static('dist'));
// Start the server
app.listen(PORT, () => {
console.log(`Server is running on http://172.16.43.135:${PORT}`);
});