/// Configuration pour le broker MQTT /// /// Centralise les paramètres de connexion au broker MQTT class MqttConfig { // Configuration du serveur MQTT static const String host = 'mqtt.geosector.fr'; static const int port = 1883; static const int securePort = 8883; static const bool useSsl = false; // Configuration d'authentification static const String username = 'geosector_chat'; static const String password = 'secure_password_here'; // Préfixes des topics MQTT static const String topicBase = 'chat'; static const String topicUserMessages = '$topicBase/user'; static const String topicAnnouncements = '$topicBase/announcement'; static const String topicGroups = '$topicBase/groups'; static const String topicConversations = '$topicBase/conversation'; // Configuration des sessions static const int keepAliveInterval = 60; static const int reconnectInterval = 5; static const bool cleanSession = true; // Configuration des notifications static const int notificationRetryCount = 3; static const Duration notificationTimeout = Duration(seconds: 30); /// Génère un client ID unique pour chaque session static String generateClientId(String userId) { return 'chat_${userId}_${DateTime.now().millisecondsSinceEpoch}'; } /// Retourne l'URL complète du broker selon la configuration SSL static String get brokerUrl { if (useSsl) { return '$host:$securePort'; } else { return '$host:$port'; } } /// Retourne le topic pour les messages d'un utilisateur static String getUserMessageTopic(String userId) { return '$topicUserMessages/$userId/messages'; } /// Retourne le topic pour les annonces globales static String getAnnouncementTopic() { return topicAnnouncements; } /// Retourne le topic pour une conversation spécifique static String getConversationTopic(String conversationId) { return '$topicConversations/$conversationId'; } /// Retourne le topic pour un groupe spécifique static String getGroupTopic(String groupId) { return '$topicGroups/$groupId'; } /// Retourne les topics auxquels un utilisateur doit s'abonner static List getUserSubscriptionTopics(String userId) { return [ getUserMessageTopic(userId), getAnnouncementTopic(), // Ajoutez d'autres topics selon les besoins ]; } }