diff --git a/api/tcpConnection.js b/api/tcpConnection.js index c31188e..3201e7e 100644 --- a/api/tcpConnection.js +++ b/api/tcpConnection.js @@ -6,7 +6,7 @@ */ // 引用TCP插件 -const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin'); +const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin"); // const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin"); // TCP连接配置 @@ -21,33 +21,33 @@ const TCP_CONFIG = { * TCP连接管理类 */ class TCPConnection { - constructor() { - this.channelConnections = new Map(); // 存储每个channel的连接状态 - this.connectionCallbacks = []; - this.messageCallbacks = []; - } + constructor() { + this.channelConnections = new Map(); // 存储每个channel的连接状态 + this.connectionCallbacks = []; + this.messageCallbacks = []; + } - /** - * TCP初始化连接 - * @param {Object} config - 连接配置 {ip, port, channel, charsetname} - * @param {Function} callback - 连接状态回调函数 - */ - connect(config = {}, callback = null) { - const channel = config.channel || TCP_CONFIG.channel; - - // 如果该channel已经连接,先断开现有连接 - if (this.channelConnections.get(channel)) { - console.log(`检测到channel ${channel}现有TCP连接,先断开...`); - this.disconnect(config); - // 等待断开完成后再连接 - setTimeout(() => { - this._performConnect(config, callback); - }, 300); - } else { - // 直接连接 - this._performConnect(config, callback); - } + /** + * TCP初始化连接 + * @param {Object} config - 连接配置 {ip, port, channel, charsetname} + * @param {Function} callback - 连接状态回调函数 + */ + connect(config = {}, callback = null) { + const channel = config.channel || TCP_CONFIG.channel; + + // 如果该channel已经连接,先断开现有连接 + if (this.channelConnections.get(channel)) { + console.log(`检测到channel ${channel}现有TCP连接,先断开...`); + this.disconnect(config); + // 等待断开完成后再连接 + setTimeout(() => { + this._performConnect(config, callback); + }, 300); + } else { + // 直接连接 + this._performConnect(config, callback); } + } /** * 执行TCP连接 @@ -66,33 +66,31 @@ class TCPConnection { connectionConfig.charsetname = config.charsetname || TCP_CONFIG.charsetname; } - console.log('开始建立TCP连接:', connectionConfig); - TCPSocket.connect( - connectionConfig, - result => { - /** - * status : 0 连接成功 - * status : 1 断开连接 - * receivedMsg : 服务器返回字符串(普通的字符串交互) - * receivedHexMsg : 服务器返回字节数组(单片机、智能家居等硬件数据交互) - */ - if (result.status == '0') { - // TCP连接成功 - this.channelConnections.set(connectionConfig.channel, true); - console.log(`TCP连接成功 - Channel ${connectionConfig.channel}`); - this._notifyConnectionCallbacks('connected', result, connectionConfig.channel); - } else if (result.status == '1') { - // TCP断开连接 - this.channelConnections.set(connectionConfig.channel, false); - console.log(`TCP断开连接 - Channel ${connectionConfig.channel}`); - this._notifyConnectionCallbacks('disconnected', result, connectionConfig.channel); - } + console.log("开始建立TCP连接:", connectionConfig); + TCPSocket.connect(connectionConfig, (result) => { + /** + * status : 0 连接成功 + * status : 1 断开连接 + * receivedMsg : 服务器返回字符串(普通的字符串交互) + * receivedHexMsg : 服务器返回字节数组(单片机、智能家居等硬件数据交互) + */ + if (result.status == "0") { + // TCP连接成功 + this.channelConnections.set(connectionConfig.channel, true); + console.log(`TCP连接成功 - Channel ${connectionConfig.channel}`); + this._notifyConnectionCallbacks("connected", result, connectionConfig.channel); + } else if (result.status == "1") { + // TCP断开连接 + this.channelConnections.set(connectionConfig.channel, false); + console.log(`TCP断开连接 - Channel ${connectionConfig.channel}`); + this._notifyConnectionCallbacks("disconnected", result, connectionConfig.channel); + } - if (result.receivedMsg) { - // 服务器返回字符串 - console.log('收到字符串消息:', result.receivedMsg); - this._notifyMessageCallbacks('string', result.receivedMsg, null, connectionConfig.channel); - } + if (result.receivedMsg) { + // 服务器返回字符串 + console.log("收到字符串消息:", result.receivedMsg); + this._notifyMessageCallbacks("string", result.receivedMsg, null, connectionConfig.channel); + } // if (result.receivedHexMsg) { // // 硬件服务器返回16进制数据 @@ -115,18 +113,18 @@ class TCPConnection { }); } - /** - * TCP发送消息(普通的字符串交互) - * @param {String|Object} message - 要发送的消息,如果是对象会自动转换为JSON字符串 - * @param {Object} config - 发送配置 {channel, charsetname} - */ - send(message, config = {}) { - const channel = config.channel || '1'; - - if (!this.channelConnections.get(channel)) { - console.warn(`TCP Channel ${channel}未连接,无法发送消息`); - return false; - } + /** + * TCP发送消息(普通的字符串交互) + * @param {String|Object} message - 要发送的消息,如果是对象会自动转换为JSON字符串 + * @param {Object} config - 发送配置 {channel, charsetname} + */ + send(message, config = {}) { + const channel = config.channel || "1"; + + if (!this.channelConnections.get(channel)) { + console.warn(`TCP Channel ${channel}未连接,无法发送消息`); + return false; + } // 如果message是对象,转换为JSON字符串 let messageStr = message; @@ -149,20 +147,20 @@ class TCPConnection { return true; } - /** - * TCP断开连接 - * @param {Object} config - 断开配置 {channel} - */ - disconnect(config = {}) { - const channel = config.channel || TCP_CONFIG.channel; - const disconnectConfig = { - channel: channel - }; + /** + * TCP断开连接 + * @param {Object} config - 断开配置 {channel} + */ + disconnect(config = {}) { + const channel = config.channel || TCP_CONFIG.channel; + const disconnectConfig = { + channel: channel, + }; - TCPSocket.disconnect(disconnectConfig); - this.channelConnections.set(channel, false); - console.log(`TCP连接已断开 - Channel ${channel}`, disconnectConfig); - } + TCPSocket.disconnect(disconnectConfig); + this.channelConnections.set(channel, false); + console.log(`TCP连接已断开 - Channel ${channel}`, disconnectConfig); + } /** * 添加连接状态监听器 @@ -206,50 +204,50 @@ class TCPConnection { } } - /** - * 获取连接状态 - * @param {String} channel - 要检查的channel,如果不指定则返回所有channel的连接状态 - * @returns {Boolean|Object} 连接状态 - */ - getConnectionStatus(channel = null) { - if (channel) { - return this.channelConnections.get(channel) || false; - } - // 返回所有channel的连接状态 - const allConnections = {}; - for (const [ch, status] of this.channelConnections) { - allConnections[ch] = status; - } - return allConnections; + /** + * 获取连接状态 + * @param {String} channel - 要检查的channel,如果不指定则返回所有channel的连接状态 + * @returns {Boolean|Object} 连接状态 + */ + getConnectionStatus(channel = null) { + if (channel) { + return this.channelConnections.get(channel) || false; } - - /** - * 通知连接状态回调 - * @private - */ - _notifyConnectionCallbacks(status, result, channel) { - this.connectionCallbacks.forEach(callback => { - try { - callback(status, result, channel); - } catch (error) { - console.error('连接状态回调执行错误:', error); - } - }); + // 返回所有channel的连接状态 + const allConnections = {}; + for (const [ch, status] of this.channelConnections) { + allConnections[ch] = status; } + return allConnections; + } - /** - * 通知消息回调 - * @private - */ - _notifyMessageCallbacks(type, message, parsedArray = null, channel = null) { - this.messageCallbacks.forEach(callback => { - try { - callback(type, message, parsedArray, channel); - } catch (error) { - console.error('消息回调执行错误:', error); - } - }); - } + /** + * 通知连接状态回调 + * @private + */ + _notifyConnectionCallbacks(status, result, channel) { + this.connectionCallbacks.forEach((callback) => { + try { + callback(status, result, channel); + } catch (error) { + console.error("连接状态回调执行错误:", error); + } + }); + } + + /** + * 通知消息回调 + * @private + */ + _notifyMessageCallbacks(type, message, parsedArray = null, channel = null) { + this.messageCallbacks.forEach((callback) => { + try { + callback(type, message, parsedArray, channel); + } catch (error) { + console.error("消息回调执行错误:", error); + } + }); + } } // 创建TCP连接实例 diff --git a/pages/marketSituation/globalIndex.vue b/pages/marketSituation/globalIndex.vue index 662c11d..e80ce2d 100644 --- a/pages/marketSituation/globalIndex.vue +++ b/pages/marketSituation/globalIndex.vue @@ -32,7 +32,7 @@ - + {{ item.ac }} @@ -41,7 +41,7 @@ - + @@ -65,11 +65,12 @@