重构xuchang-screen,从umi->cra, 计划引入redux
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

96 行
2.5 KiB

  1. const { WebSocket } = require("ws");
  2. const { getRandomAlarmList } = require("./fakedata/alarmList");
  3. const wss = new WebSocket.Server({ port: 9800 });
  4. console.log('[websocket] server created');
  5. wss.on("connection", function (ws, req) {
  6. console.log(
  7. "[用户连接]: ",
  8. req.socket.remoteAddress,
  9. "当前总用户数:",
  10. wss.clients.size
  11. );
  12. ws.on("open", function () {
  13. console.log('[websocket] opened');
  14. ws.send("connected");
  15. });
  16. ws.on("message", function (msg) {
  17. console.log("[==>]", msg);
  18. });
  19. ws.on("error", console.error);
  20. const timer = setInterval(() => {
  21. sendMsg(ws, "alarmList"); // 报警信息
  22. }, 10 * 1000);
  23. ws.on("close", function () {
  24. console.log("停止监听");
  25. clearInterval(timer);
  26. });
  27. });
  28. function sendMsg(ws, type) {
  29. let data = {};
  30. switch (type) {
  31. case "alarmList":
  32. const alarmList = getRandomAlarmList(Math.floor(Math.random() * 10) + 1);
  33. alarmList.forEach((str) => {
  34. const [code, detail] = str.split(",");
  35. data[code] = detail;
  36. });
  37. break;
  38. case "kiln-info":
  39. for (const key in template.kilnInfo) {
  40. data[key] = utils.getRandom(template.kilnInfo[key]);
  41. }
  42. break;
  43. case "energy-cost":
  44. for (const key in template.energyCost) {
  45. data[key] = utils.getRandom(template.energyCost[key]);
  46. }
  47. break;
  48. case "run-state":
  49. data = template.runState;
  50. data.fireDirection =
  51. Math.floor(Math.random() * 10) % 2 === 0 ? "南火" : "北火";
  52. break;
  53. case "realtime":
  54. /** 天然气 实时流量 */
  55. data.gasii = template.realtime.gasii.map((v) => utils.getRandom(v));
  56. /** 助燃风 实时流量 */
  57. data.wind = template.realtime.wind.map((v) => utils.getRandom(v));
  58. break;
  59. case "his-trend":
  60. const hisTrend = {
  61. gas: {},
  62. wind: {},
  63. };
  64. Object.keys(template.hisTrend.gas).forEach((key) => {
  65. hisTrend.gas[key] = template.hisTrend.gas[key].map((v) =>
  66. utils.getRandom(v)
  67. );
  68. });
  69. Object.keys(template.hisTrend.wind).forEach((key) => {
  70. hisTrend.wind[key] = template.hisTrend.wind[key].map((v) =>
  71. utils.getRandom(v)
  72. );
  73. });
  74. data = hisTrend;
  75. break;
  76. case "gas":
  77. // data = template.gas;
  78. break;
  79. case "kiln-top":
  80. // data = template.kilnTop;
  81. break;
  82. case "kiln-bottom":
  83. // data = template.kilnBottom;
  84. break;
  85. default:
  86. // data = 'You are connected!';
  87. break;
  88. }
  89. ws.send(JSON.stringify({ type, data }));
  90. }