shaogen1995 2 dni temu
rodzic
commit
edd7a1d952

+ 68 - 1
node_socket_io/NeiMengGuServer.js

@@ -32,7 +32,6 @@ let theme = [
 // {type:'switch',data:{ name: "空中成像", val: "open"|"close" }'} --单个开关
 // {type:'switch',data:{ name: "all", val: "open"|"close" }'} --全部开关
 
-
 // 3-透明展示柜
 let show = [
   { name: "A柜左", val: 1 },
@@ -121,3 +120,71 @@ io.on("connection_error", (err) => {
 io.on("disconnect", (reason) => {
   console.log("客户端断开连接:", reason);
 });
+
+//tcp协议------------------
+
+const tcpPort = 8052;
+
+const tcpObj = {
+  // '101' '102'都是字符串
+  // 空中成像
+  101: "空中成像-历史",
+  102: "空中成像-红色",
+  103: "空中成像-非遗",
+  // 文物互动墙
+  201: "文物互动墙-历史",
+  202: "文物互动墙-红色",
+  203: "文物互动墙-非遗",
+  // 透明展示柜A
+  301: "透明展示柜A-历史",
+  302: "透明展示柜A-红色",
+  303: "透明展示柜A-非遗",
+  // 透明展示柜B
+  401: "透明展示柜B-历史",
+  402: "透明展示柜B-红色",
+  403: "透明展示柜B-非遗",
+  // AI数字人
+  501: "AI数字人-历史",
+  502: "AI数字人-红色",
+  503: "AI数字人-非遗",
+  // 切换所有主题
+  601: "all-红色",
+  602: "all-历史",
+  603: "all-非遗",
+};
+
+// tcp-server.js
+const net = require("net");
+const server = net.createServer((socket) => {
+  console.log("tcp客户端已连接");
+
+  socket.on("data", (data) => {
+    console.log("收到tcp客户端消息:", data.toString());
+
+    const valTxt = tcpObj[data.toString()];
+    if (valTxt) {
+      const valArr = valTxt.split("-");
+      const name = valArr[0];
+      const val = valArr[1];
+      theme = theme.map((v) => ({
+        ...v,
+        val: name === "all" ? val : v.name === name ? val : v.val,
+      }));
+      // 然后向前端广播 数据 {type:'cut',data:theme}
+      io.emit("UpdateDeviceInfo", { type: "cut", data: theme, id: socket.id });
+      // 回复客户端
+      socket.write("success");
+    } else {
+      console.log(`收到tcp客户端消息:${data.toString()},未找到对应主题`);
+      socket.write("error: unknown command");
+    }
+  });
+
+  socket.on("end", () => {
+    console.log("tcp客户端断开连接");
+  });
+});
+
+server.listen(tcpPort, () => {
+  console.log("TCP 服务器已启动在  http://" + localIP + ":" + tcpPort);
+});

+ 4 - 23
node_socket_io/tcp.js

@@ -1,29 +1,10 @@
 // 引入 Node.js 内置 net 模块(TCP 通信核心)
 const net = require("net");
 
-// "CMD=501"
-// 101:空中成像 开
-// 102:空中成像 关
-
-// 201:文物互动墙 开
-// 202:文物互动墙 关
-
-// 301:透明展示柜A 开
-// 302:透明展示柜A 关
-
-// 401:透明展示柜B 开
-// 402:透明展示柜B 关
-
-// 501:AI数字人 开
-// 502:AI数字人 关
-
-// 601:所有设备全部 开
-// 602:所有设备全部 关
-
 // 配置:服务器地址 + 端口
 const options = {
   host: "127.0.0.1", // 服务器IP
-  port: 8080, // 服务器端口
+  port: 8052, // 服务器端口
 };
 
 // 创建 TCP 客户端
@@ -33,11 +14,11 @@ const client = net.createConnection(options, () => {
   // --------------------------
   // 需求1:连接成功 马上发送第一条消息
   // --------------------------
-  client.write(`CMD=601`);
+  client.write(`603`);
 });
 
 // 消息计数器(用于生成不同消息)
-let msgArr = [102, 202, 302, 402, 502, 101, 201, 301, 401, 501, 602, 601];
+let msgArr = [601, 602, 603];
 
 let msgIndex = 0;
 
@@ -46,7 +27,7 @@ let msgIndex = 0;
 // --------------------------
 const intervalId = setInterval(() => {
   // 生成不同内容的消息
-  const message = `CMD=${msgArr[msgIndex]}`;
+  const message = msgArr[msgIndex].toString(); // 转为字符串发送
 
   // 发送
   client.write(message);

+ 2 - 2
后台管理/public/myData/index.js

@@ -2,8 +2,8 @@
 const baseUrlTempOne = 'https://sit-nmgzhanche.4dage.com'
 
 // node_socket_io 服务地址
-// const nodeSocketUrl = 'http://192.168.20.55:8501'
-const nodeSocketUrl = 'https://sit-nmgzhanche.4dage.com'
+const nodeSocketUrl = 'http://192.168.20.55:8501'
+// const nodeSocketUrl = 'https://sit-nmgzhanche.4dage.com'
 const nodeSocketPath = '/websocket/'
 
 // 大模型接口地址

+ 6 - 6
后台管理/src/pages/Layout/data.ts

@@ -6,12 +6,12 @@ const tabLeftArr: RouterType = [
     id: 6,
     name: '内容管理',
     son: [
-      // {
-      //   id: 1,
-      //   name: '设备管理',
-      //   path: '/',
-      //   Com: React.lazy(() => import('../A1facility'))
-      // },
+      {
+        id: 1,
+        name: '设备管理',
+        path: '/cccc',
+        Com: React.lazy(() => import('../A1facility'))
+      },
       {
         id: 2,
         name: '内容管理',