| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //数据格式
- let theme = [
- { name: "空中成像", val: "历史" },
- { name: "文物互动墙", val: "历史" },
- { name: "透明展示柜A", val: "历史" },
- { name: "透明展示柜B", val: "历史" },
- { name: "AI数字人", val: "历史" },
- ];
- // 通信数据格式
- // 1-切换主题
- // {type:'cut',data:{ name: "空中成像", val: "红色" }} -----单个切换
- // {type:'cut',data:{ name: "all", val: "红色" }} -----全部切换
- // 2-开关
- // {type:'switch',data:{ name: "空中成像", val: "open"|"close" }'} --单个开关
- // {type:'switch',data:{ name: "all", val: "open"|"close" }'} --全部开关
- // 3-透明展示柜
- let show = [
- { name: "A柜左", val: "1" },
- { name: "A柜右", val: "2" },
- { name: "B柜左", val: "3" },
- { name: "B柜右", val: "4" },
- ];
- // {type:'show',data:{ name: "A柜右", val: 5 }'}
- // 4-投屏管理
- let screen = [
- { name: "户外裸眼3D", val: "open" },
- { name: "文物互动墙", val: "close" },
- { name: "数字艺术触摸屏", val: "open" },
- { name: "AI数字人", val: "open" },
- ];
- // {type:'screen',data:{ name: "户外裸眼3D", val: "open" }'}
- const io = require("socket.io")(12345, {
- pingInterval: 30005,
- pingTimeout: 5000,
- upgradeTimeout: 3000,
- allowUpgrades: true,
- cookie: false,
- serveClient: true,
- });
- console.log("Starting Socket.IO server");
- io.on("connection", (socket) => {
- console.log("[" + new Date().toUTCString() + "] game connecting");
- socket.emit("UpdateDeviceInfo", { type: "cut", data: theme });
- socket.emit("UpdateDeviceInfo", { type: "show", data: show });
- socket.emit("UpdateDeviceInfo", { type: "screen", data: screen });
- socket.on("ChangeDeviceInfo", (info) => {
- const { name, val } = info.data;
- if (info.type === "cut") {
- 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 });
- } else if (info.type === "show") {
- show = show.map((v) => ({
- ...v,
- val: v.name === name ? val : v.val,
- }));
- // 然后向前端广播 数据 {type:'show',data:show}
- io.emit("UpdateDeviceInfo", { type: "show", data: show });
- } else if (info.type === "screen") {
- screen = screen.map((v) => ({
- ...v,
- val: v.name === name ? val : v.val,
- }));
- // 然后向前端广播 数据 {type:'screen',data:screen}
- io.emit("UpdateDeviceInfo", { type: "screen", data: screen });
- }
- });
- });
|