# NodeSocketSersvice **Repository Path**: huiyixin/node-socket-sersvice ## Basic Information - **Project Name**: NodeSocketSersvice - **Description**: 基于 Node.js 的 Node播控服务,实现 UDP 广播和 WebSocket 实时通信。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-09 - **Last Updated**: 2025-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node UDP/Socket 播控服务 ## 项目概述 基于 Node.js 的 Node播控服务,实现 UDP 广播和 WebSocket 实时通信。 ### 主要功能 - UDP 广播服务 - WebSocket **连接管理** - 实时消息转发 - 自动重连机制 - 心跳保活 - 日志监控 - 文件下载分发 (http://192.168.1.100:9988/download) ## 技术架构 ### **核心技术栈** - Node.js - **WebSocket** - UDP - Winston (日志) - child_process (子进程) **** ### 打包说明 - **打包命令**:`npm run build` - **打包后文件**:`dist` 目录下的 `Node播控服务.exe` 文件 - **打包后文件**:`setup` 目录下的 `Node播控服务Setup.exe` 安装文件 被指文件setup.iss 需基于ISCC环境运行 - **打包后文件说明**:打包后的文件可以直接在 Node.js 环境下运行,无需重新安装依赖。 ## 使用说明 ### **运行环境** - Node.js 版本:建议使用 Node.js 18.17.0 及以上版本 - 操作系统:Windows、Linux、macOS ### **安装依赖** - 在项目根目录下运行以下命令安装依赖: ```bash npm install ``` ## WebSocket 消息格式 ```javascript { action: String, // 动作类型 payload: Object, // 数据负载 type: String ('web | xr') // 消息类型 } ``` ## **websocket命令** ### 设备不在线 ```javascript // 响应 { action: "/*", payload: {}, code: 505, message:"设备不在线" type: "web" } ``` ### 心跳机制 ```javascript // 请求 { action: "/heartbeat", payload: {}, type: "web" } // 响应 { action: "/heartbeat", payload: {}, code: 200, type: "web" } ``` ### 获取在线设备 ```javascript // 请求 { action: "/api/query/list", payload: {}, type: "web" } // 响应 { type: "web", action: "/api/query/list", payload: { list: [ { sn: "PA7H17MGGB290501W", time: "2025/1/9 15:15:15", clientIP: "192.168.1.109" }, ] }, code: 200 } ``` ### 设备离线通知 ```javascript // 响应 { type: "web", action: "/api/device/offline", payload: {sn:"PA7N10MGG8071802W"}, code: 200 } ``` ### 获取电量 ```javascript // 请求 { action: "/api/device/battery", payload: {sn:"PA7N10MGG8071802W"}, type: "web" } // 响应 { type: "web", action: "/api/device/battery", payload: {sn:"PA7N10MGG8071802W",battery:"60"}, code: 200 } ``` ### 获取左右手柄电量 ```javascript // 请求 { action: "/api/device/battery/controller", payload: { sn:"PA7N10MGG8071802W", ctr:"left"//left 左 right右 }, type: "web" } // 响应 { type: "web", action: "/api/device/battery", payload: { sn:"PA7N10MGG8071802W", battery:"-1",// -1:未连接 60:电量 ctr:"left"}, code: 200 } ``` ### 息亮屏 ```javascript // 请求 { action: "/api/device/screen", payload: { sn:"PA7N10MGG8071802W", state:false// false:息屏 true:亮屏 }, type: "web" } // 响应 { type: "web", action: "/api/device/screen", payload: { sn:"PA7N10MGG8071802W", status:"1",// 0:成功 1:失败 state:false}, code: 200 } ``` ### 设置音量 ```javascript // 请求 { action: "/api/device/volume", payload: { sn:"PA7N10MGG8071802W", volume:50 }, type: "web" } // 响应 { type: "web", action: "/api/device/screen", payload: { sn:"PA7N10MGG8071802W", volume:50 state:1 //0:成功 1:失败 }, code: 200 } ``` ### 启动停止 app ```javascript // 请求 { action: "/api/device/app/launch", payload: { sn:"PA7N10MGG8071802W", package:"com.ymkj.testbleaar", state:true// false:关闭 true:启动 }, type: "web" } // 响应 { type: "web", action: "/api/device/screen", payload: { sn:"PA7N10MGG8071802W", package:"com.ymkj.testbleaar", state:true// false:关闭 true:启动 status:0 //0:成功 1:失败 }, code: 200 } ``` ### 获取当前屏幕状态 ```javascript // 请求 { action: "/api/device/currentScreen", payload: { sn:"PA7N10MGG8071802W", }, type: "web" } // 响应 { type: "web", action: "/api/device/screen", payload: { sn:"PA7N10MGG8071802W", package:"com.ymkj.testbleaar", status:false //false:息屏 true:亮屏 }, code: 200 } ``` ### 获取当前运行的app ```javascript // 请求 { action: "/api/device/currentPackage", payload: { sn:"PA7N10MGG8071802W", }, type: "web" } // 响应 { type: "web", action: "/api/device/currentPackage", payload: { sn:"PA7N10MGG8071802W", package:"com.ymkj.testbleaar", }, code: 200 } ``` ### 重启 ```javascript // 请求 { action: "/api/device/restart", payload: { sn:"PA7N10MGG8071802W", }, type: "web" } // 响应 { type: "web", action: "/api/device/restart", payload: { sn:"PA7N10MGG8071802W", status:"1",// 1:成功 0:失败 }, code: 200 } ``` ### 关机 ```javascript // 请求 { action: "/api/device/shutdown", payload: { sn:"PA7N10MGG8071802W", }, type: "web" } // 响应 { type: "web", action: "/api/device/shutdown", payload: { sn:"PA7N10MGG8071802W", status:"1",// 1:成功 0:失败 }, code: 200 } ``` ### APP安装和地图安装 ```javascript // 请求 { action: "/api/upgrade", payload: { range:"PA7H17MGGB290501W,PA7H17MGGB2901802W", //多台设备用逗号隔开 description:"随便的描述内容", url:"https://resourcetest.aicverse.com/common/storage/039b057c-2c41-4bed-93d8-6091721f888b.apk",//下载地址 version:"1.0.8",//版本 sha1:"",//文件SHA1值 不是必填 package:"com.YMKJ.Musuem", type:"apk" //apk:安装包 zip:地图 }, type: "web" } // 响应 { action: "/api/upgrade", payload: { range:"PA7H17MGGB290501W,PA7H17MGGB2901802W", //多台设备用逗号隔开 description:"随便的描述内容", url:"https://resourcetest.aicverse.com/common/storage/039b057c-2c41-4bed-93d8-6091721f888b.apk",//下载地址 version:"1.0.8",//版本 sha1:"",//文件SHA1值 不是必填 package:"com.YMKJ.Musuem", type:"apk" //apk:安装包 zip:地图 status:"downStart" /* downStart:局域网下载开始 down:下载开始 down_fail:下载失败 down_complete:下载完成 install:安装中 install_success:安装成功 install_fail:安装失败 */ }, type: "web" } ```