集成双 MQTT 客户端实现设备实时数据监控(未测试)
1.集成两个独立的 MQTT 客户端,支持 WebSocket 和 TCP 协议 2.实现无人机/机场 OSD 实时监控(ws://1.95.137.212:8083/mqtt) 3.实现任务状态消息订阅(tcp://1.95.137.212:59020) 4.采用清洁架构设计,分层清晰(Domain → Data → Presentation)
This commit is contained in:
@@ -91,6 +91,7 @@ import '../../features/v2/device_list/domain/usecases/get_uav_video_stream_useca
|
||||
import '../../features/v2/device_list/domain/usecases/update_flight_task_status_usecase.dart';
|
||||
import '../../features/v2/device_list/presentation/bloc/drone_station_bloc.dart';
|
||||
import '../../features/v2/device_list/presentation/bloc/robot_list_bloc.dart';
|
||||
import '../../features/v2/device_list/presentation/bloc/device_realtime_bloc.dart';
|
||||
import '../../features/v2/waring_center/data/datasources/alarm_remote_datasource.dart';
|
||||
import '../../features/v2/waring_center/data/datasources/impl/alarm_remote_datasource_impl.dart';
|
||||
import '../../features/v2/waring_center/data/repositories/alarm_repository_impl.dart';
|
||||
@@ -126,6 +127,14 @@ import '../network/dio_client.dart';
|
||||
import '../network/net_message_dispatcher.dart';
|
||||
import '../network/tcp/tcp_client.dart';
|
||||
import '../network/tcp/tcp_status_cubit.dart';
|
||||
import '../network/mqtt/domain/interfaces/mqtt_client.dart';
|
||||
import '../network/mqtt/data/infrastructure/mqtt_client_impl.dart';
|
||||
import '../network/mqtt/data/datasources/drone_osd_datasource.dart';
|
||||
import '../network/mqtt/data/datasources/task_message_datasource.dart';
|
||||
import '../network/mqtt/domain/repositories/drone_osd_repository.dart';
|
||||
import '../network/mqtt/domain/repositories/task_message_repository.dart';
|
||||
import '../network/mqtt/data/repositories/drone_osd_repository_impl.dart';
|
||||
import '../network/mqtt/data/repositories/task_message_repository_impl.dart';
|
||||
import '../router/app_router.dart';
|
||||
import '../storage/impl/user_storage_impl.dart';
|
||||
import '../storage/user_storage.dart';
|
||||
@@ -148,7 +157,17 @@ Future<void> init() async {
|
||||
);
|
||||
sl.registerLazySingleton(() => PathPlanningService());
|
||||
|
||||
/// 1.1.3 NetMessageDispatcher:消息调度器,并将 TcpClient 注入给它
|
||||
/// 1.1.3 MQTT Clients - 两个独立的 MQTT 客户端实例
|
||||
sl.registerLazySingleton<MqttClient>(
|
||||
() => MqttClientImpl(),
|
||||
instanceName: 'droneOsdClient',
|
||||
);
|
||||
sl.registerLazySingleton<MqttClient>(
|
||||
() => MqttClientImpl(),
|
||||
instanceName: 'taskMessageClient',
|
||||
);
|
||||
|
||||
/// 1.1.4 NetMessageDispatcher:消息调度器,并将 TcpClient 注入给它
|
||||
sl.registerLazySingleton(
|
||||
() => NetMessageDispatcher(
|
||||
sl<TcpClient>(),
|
||||
@@ -172,6 +191,22 @@ Future<void> init() async {
|
||||
/// 1.3 Log工具Sentry
|
||||
sl.registerLazySingleton<ILoggerService>(() => SentryLoggerImpl());
|
||||
|
||||
/// 1.4 --- MQTT Data Sources ---
|
||||
sl.registerLazySingleton<DroneOsdDataSource>(
|
||||
() => DroneOsdDataSourceImpl(sl<MqttClient>(instanceName: 'droneOsdClient')),
|
||||
);
|
||||
sl.registerLazySingleton<TaskMessageDataSource>(
|
||||
() => TaskMessageDataSourceImpl(sl<MqttClient>(instanceName: 'taskMessageClient')),
|
||||
);
|
||||
|
||||
/// 1.5 --- MQTT Repositories ---
|
||||
sl.registerLazySingleton<DroneOsdRepository>(
|
||||
() => DroneOsdRepositoryImpl(sl<DroneOsdDataSource>()),
|
||||
);
|
||||
sl.registerLazySingleton<TaskMessageRepository>(
|
||||
() => TaskMessageRepositoryImpl(sl<TaskMessageDataSource>()),
|
||||
);
|
||||
|
||||
/// 2. 数据源 (DataSource)
|
||||
sl.registerLazySingleton<AuthHttpDataSource>(
|
||||
() => AuthHttpDataSourceImpl(sl()),
|
||||
@@ -326,6 +361,11 @@ Future<void> init() async {
|
||||
/// Robot List V2
|
||||
sl.registerFactory<RobotListBloc>(() => RobotListBloc(sl<Dio>()));
|
||||
|
||||
/// Device Realtime V2 (MQTT)
|
||||
sl.registerFactory<DeviceRealtimeBloc>(
|
||||
() => DeviceRealtimeBloc(sl<TaskMessageRepository>()),
|
||||
);
|
||||
|
||||
/// Alarm Center V2
|
||||
sl.registerLazySingleton<AlarmRemoteDataSource>(
|
||||
() => AlarmRemoteDataSourceImpl(),
|
||||
|
||||
Reference in New Issue
Block a user