const { WebSocket } = require("ws"); const { getRandomAlarmList } = require("./fakedata/alarmList"); const wss = new WebSocket.Server({ port: 9800 }); console.log('[websocket] server created'); wss.on("connection", function (ws, req) { console.log( "[用户连接]: ", req.socket.remoteAddress, "当前总用户数:", wss.clients.size ); ws.on("open", function () { console.log('[websocket] opened'); ws.send("connected"); }); ws.on("message", function (msg) { console.log("[==>]", msg); }); ws.on("error", console.error); const timer = setInterval(() => { sendMsg(ws, "alarmList"); // 报警信息 }, 10 * 1000); ws.on("close", function () { console.log("停止监听"); clearInterval(timer); }); }); function sendMsg(ws, type) { let data = {}; switch (type) { case "alarmList": const alarmList = getRandomAlarmList(Math.floor(Math.random() * 10) + 1); alarmList.forEach((str) => { const [code, detail] = str.split(","); data[code] = detail; }); break; case "kiln-info": for (const key in template.kilnInfo) { data[key] = utils.getRandom(template.kilnInfo[key]); } break; case "energy-cost": for (const key in template.energyCost) { data[key] = utils.getRandom(template.energyCost[key]); } break; case "run-state": data = template.runState; data.fireDirection = Math.floor(Math.random() * 10) % 2 === 0 ? "南火" : "北火"; break; case "realtime": /** 天然气 实时流量 */ data.gasii = template.realtime.gasii.map((v) => utils.getRandom(v)); /** 助燃风 实时流量 */ data.wind = template.realtime.wind.map((v) => utils.getRandom(v)); break; case "his-trend": const hisTrend = { gas: {}, wind: {}, }; Object.keys(template.hisTrend.gas).forEach((key) => { hisTrend.gas[key] = template.hisTrend.gas[key].map((v) => utils.getRandom(v) ); }); Object.keys(template.hisTrend.wind).forEach((key) => { hisTrend.wind[key] = template.hisTrend.wind[key].map((v) => utils.getRandom(v) ); }); data = hisTrend; break; case "gas": // data = template.gas; break; case "kiln-top": // data = template.kilnTop; break; case "kiln-bottom": // data = template.kilnBottom; break; default: // data = 'You are connected!'; break; } ws.send(JSON.stringify({ type, data })); }