From a85e047fa3f1a04aca4aeb079f06db69a96c8838 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期三, 10 十二月 2025 23:33:25 +0800
Subject: [PATCH] gx完成

---
 index.js |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/index.js b/index.js
index 0bcbd9e..9c2bac5 100644
--- a/index.js
+++ b/index.js
@@ -10,10 +10,12 @@
 const mqttConfigPath = path.join(appPath, 'mqtt.json');
 const aliyunConfigPath = path.join(appPath, 'aliyun.json');
 const httpConfigPath = path.join(appPath, 'httpConfig.json');
+const homeConfigPath = path.join(appPath, 'homeConfig.json');
 
 const mqttConfig = JSON.parse(fs.readFileSync(mqttConfigPath, 'utf8'));
-const aliyunConfig=JSON.parse(fs.readFileSync(aliyunConfigPath, 'utf8'))
+const aliyunConfig = JSON.parse(fs.readFileSync(aliyunConfigPath, 'utf8'));
 const httpConfig = JSON.parse(fs.readFileSync(httpConfigPath, 'utf8'));
+const homeConfig = JSON.parse(fs.readFileSync(homeConfigPath, 'utf8'));
 
 
 console.log(aliyunConfig)
@@ -67,7 +69,12 @@
     }
 
     handleDevice(socket) {
-        const deviceId = socket.remoteAddress + ':' + socket.remotePort;
+        // 处理 IPv6 映射 IPv4 地址 (::ffff:127.0.0.1 -> 127.0.0.1)
+        let remoteAddress = socket.remoteAddress;
+        if (remoteAddress.startsWith('::ffff:')) {
+            remoteAddress = remoteAddress.slice(7); // 移除 ::ffff: 前缀
+        }
+        const deviceId = remoteAddress + ':' + socket.remotePort;
         logger.info(`建立新连接: ${deviceId}`);
 
         const deviceInfo = {
@@ -190,9 +197,11 @@
         deviceInfo.lastAck = Date.now();
 
         try {
-            const masData = toModel(message);
+            const ipAddress = deviceId
+            const masData = toModel(message, ipAddress);
             deviceInfo.iotDeviceNo = masData.n;
             deviceInfo.masData = masData;
+            
             
             // ✅【新增】缓存数据到内存(按设备序号)
             dataCache.setDeviceData(masData.n, masData);
@@ -325,7 +334,7 @@
     manager.handleDevice(socket);
 });
 
-const PORT = process.env.PORT || 10961;
+const PORT =  homeConfig.socketPort || 10961;
 server.listen(PORT, () => {
     logger.info(`Socket 服务已启动,监听超级端口: ${PORT}`);
 });

--
Gitblit v1.8.0