import { store } from "../store"; export function randomInt(min, max, includeMax = false) { let Fn = includeMax ? Math.ceil : Math.floor; let num = Fn(Math.random() * max); while (num < min) { num = Fn(Math.random() * max); } return num; } export class WsClient { static wsServer = "ws://192.168.1.12:8081/xc-screen/websocket/xc001"; static socket = null; static tryCount = 0; constructor() { if (WsClient.socket) return; WsClient.socket = new WebSocket(WsClient.wsServer); WsClient.socket.onopen = () => { console.log("[*] websocket connected!"); }; WsClient.socket.onmessage = (e) => { let serializedData = null; try { serializedData = JSON.parse(e.data); } catch (error) { console.log("[*] websocket: [unable to serialize] ---> ", e); } switch (serializedData?.type) { case "KilnInfo": { store.dispatch({ type: "kiln/setKilnInfo", payload: serializedData.data, }); break; } case "CombustionAirInfo": { // 助燃风流量 实时 store.dispatch({ type: "combustionAir/setRuntime", payload: serializedData.data.combustionAirNow, // [] }); // 助燃风流量 历史 store.dispatch({ type: "combustionAir/setHistory", payload: serializedData.data.combustionAirHis, // {} }); break; } case "GasInfo": { // 天然气流量 1 实时 store.dispatch({ type: "natGas/setGasIRuntime", payload: serializedData.data.gas1Now, }); // 天然气流量 1 历史 store.dispatch({ type: "natGas/setGasIHistory", payload: serializedData.data.hisGas1, }); // 天然气流量 2 实时 store.dispatch({ type: "natGas/setGasIIRuntime", payload: serializedData.data.gas2Now, }); // 天然气流量 2 历史 store.dispatch({ type: "natGas/setGasIIHistory", payload: serializedData.data.hisGas2, }); break; } case "FanFrequencyInfo": { // 风机运行频率 暂时只有实时数据 store.dispatch({ type: "fanFrequence/setRuntime", payload: serializedData.data.FanFrequencyInfo, }); // 风机运行频率 历史 暂无 break; } case "TopTempInfo": { // 碹顶温度列表 store.dispatch({ type: "temperature/setTopTemp", payload: serializedData.data.topTempInfo, }); break; } case "BottomTempInfo": { // 碹底温度列表 store.dispatch({ type: "temperature/setBottomTemp", payload: serializedData.data.bottomTempInfo, }); break; } case "FeederInfo": { // 投料机信息 store.dispatch({ type: "feeder/setFeederInfo", payload: serializedData.data, }); break; } case "FireInfo": { // 火向时间信息 store.dispatch({ type: "fireInfo/setFireInfo", payload: serializedData.data, }); break; } case "FanInfo": { break; } default: { console.log("websocket message: [unknown] ---> ", e.data); } } }; WsClient.socket.onerror = (e) => { console.log("[*] websocket error!", e, e.data); }; WsClient.socket.onclose = (e) => { let timer = setTimeout(() => { if (WsClient.tryCount < 3) { new WsClient(); WsClient.tryCount += 1; } else clearTimeout(timer); }, 30000); }; } }