75 lines
2.3 KiB
Dart
75 lines
2.3 KiB
Dart
/// 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<String> getUserSubscriptionTopics(String userId) {
|
|
return [
|
|
getUserMessageTopic(userId),
|
|
getAnnouncementTopic(),
|
|
// Ajoutez d'autres topics selon les besoins
|
|
];
|
|
}
|
|
}
|