Implémentation du WebRenderer et améliorations du serveur
Ajout de la fonctionnalité WebRenderer permettant au navigateur de se connecter comme renderer UPnP. - Implémentation du composant Vue useWebRenderer pour gérer la connexion WebSocket et le contrôle audio - Ajout d'un proxy WebSocket dans Vite pour rediriger les requêtes /api/webrenderer/ws vers le serveur - Modification du serveur pour permettre l'enregistrement dynamique de routes et extraction du JoinHandle - Améliorations du parsing des métadonnées AVTransport pour gérer les types String et DIDLLite - Ajout de la détection et du nommage des navigateurs dans le WebRenderer - Mise à jour des dépendances avec tower 0.5.2 - Correction de la gestion des threads lors de l'arrêt du serveur HTTP
This commit is contained in:
@@ -137,8 +137,13 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
info!("✅ PMOMusic is ready!");
|
||||
info!("Press Ctrl+C to stop...");
|
||||
|
||||
// Attendre le signal Ctrl+C et l'arrêt du serveur HTTP
|
||||
server.write().await.wait().await;
|
||||
// Extraire le join_handle AVANT de libérer le write lock,
|
||||
// pour pouvoir l'awaiter sans tenir le write lock du serveur global.
|
||||
// (Tenir le write lock pendant wait() bloquerait register_device() dynamique)
|
||||
let join_handle = server.write().await.take_join_handle();
|
||||
if let Some(h) = join_handle {
|
||||
let _ = h.await;
|
||||
}
|
||||
|
||||
// Le serveur HTTP est arrêté, mais des threads (ControlPoint, etc.) peuvent encore tourner
|
||||
// Attendre 2 secondes pour laisser le temps aux threads de se terminer
|
||||
|
||||
Reference in New Issue
Block a user