server.js 1.65 KB
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}`);
});