接受TCP的推送消息-初步
This commit is contained in:
@@ -35,6 +35,13 @@ class TcpClient {
|
||||
debugPrint('收到服务端心跳,自动回复...');
|
||||
sendHeartbeat(); // 回复 AB AA FF AA AB
|
||||
}
|
||||
|
||||
// 🔥 处理推送消息
|
||||
if (isPushMsg(packet)) {
|
||||
debugPrint('收到推送消息,开始处理...');
|
||||
handlePushMessage(packet); // 自定义处理逻辑
|
||||
}
|
||||
|
||||
_controller.add(packet);
|
||||
}
|
||||
},
|
||||
@@ -108,5 +115,43 @@ class TcpClient {
|
||||
}
|
||||
|
||||
|
||||
/// 判断是否是推送消息
|
||||
bool isPushMsg(RawPacket packet) {
|
||||
return packet.command == 0x12;
|
||||
}
|
||||
/// 处理推送消息
|
||||
/// 处理推送消息
|
||||
void handlePushMessage(RawPacket packet) {
|
||||
try {
|
||||
// 打印详细信息
|
||||
debugPrint('收到推送消息:命令码=${packet.command}, 时间=${DateTime.now()}');
|
||||
|
||||
// 解码 payload 为字符串
|
||||
final jsonString = utf8.decode(packet.payload);
|
||||
debugPrint('推送内容:$jsonString');
|
||||
|
||||
// 如果是 JSON 格式,进一步解析
|
||||
final jsonData = jsonDecode(jsonString) as Map<String, dynamic>;
|
||||
if (jsonData.containsKey('event')) {
|
||||
final event = jsonData['event'];
|
||||
final deviceId = jsonData['deviceId'] ?? '未知设备';
|
||||
final status = jsonData['status'] ?? '未知状态';
|
||||
|
||||
debugPrint('事件类型:$event, 设备ID:$deviceId, 状态:$status');
|
||||
|
||||
// 根据事件类型处理逻辑
|
||||
if (event == 'device_status_changed') {
|
||||
// 示例:更新设备状态
|
||||
debugPrint('设备状态变更:$deviceId -> $status');
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
// 异常处理
|
||||
debugPrint('推送消息解析失败:${e.toString()}');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user