From 1e882ba6c3f00c579ee2959612b9ae14f774f3f1 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Mon, 9 Feb 2026 07:18:13 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20impl=C3=A9mentation=20du=20WebRenderer?= =?UTF-8?q?=20UPnP=20priv=C3=A9=20par=20navigateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout de la fonctionnalité WebRenderer permettant à chaque navigateur connecté de devenir un MediaRenderer UPnP privé. - Création du crate pmowebrenderer avec l'architecture complète - Implémentation des handlers SOAP → WebSocket pour les services AVTransport, RenderingControl et ConnectionManager - Intégration avec le ControlPoint pour l'enregistrement dynamique des renderers - Gestion des sessions avec timeout et cleanup automatique - Support des commandes de transport (play, pause, stop, seek) et du contrôle du volume - Mise à jour des dépendances dans Cargo.toml et Cargo.lock - Documentation de l'architecture dans Blackboard/Architecture/webrenderer.md --- Blackboard/Architecture/webrenderer.md | 97 ++++ Blackboard/ToThinkAbout/webrenderer.md | 3 +- Cargo.lock | 133 +++++- Cargo.toml | 7 +- PMOMusic/Cargo.toml | 1 + PMOMusic/src/main.rs | 12 +- pmoupnp/Cargo.toml | 2 +- pmoupnp/src/ssdp/client.rs | 105 +---- pmoupnp/src/ssdp/server.rs | 149 ++---- pmowebrenderer/Cargo.toml | 38 ++ pmowebrenderer/src/config.rs | 57 +++ pmowebrenderer/src/error.rs | 24 + pmowebrenderer/src/handlers.rs | 316 +++++++++++++ pmowebrenderer/src/lib.rs | 25 + pmowebrenderer/src/messages.rs | 89 ++++ pmowebrenderer/src/renderer.rs | 621 +++++++++++++++++++++++++ pmowebrenderer/src/session.rs | 105 +++++ pmowebrenderer/src/state.rs | 35 ++ pmowebrenderer/src/websocket.rs | 424 +++++++++++++++++ 19 files changed, 2028 insertions(+), 215 deletions(-) create mode 100644 Blackboard/Architecture/webrenderer.md create mode 100644 pmowebrenderer/Cargo.toml create mode 100644 pmowebrenderer/src/config.rs create mode 100644 pmowebrenderer/src/error.rs create mode 100644 pmowebrenderer/src/handlers.rs create mode 100644 pmowebrenderer/src/lib.rs create mode 100644 pmowebrenderer/src/messages.rs create mode 100644 pmowebrenderer/src/renderer.rs create mode 100644 pmowebrenderer/src/session.rs create mode 100644 pmowebrenderer/src/state.rs create mode 100644 pmowebrenderer/src/websocket.rs diff --git a/Blackboard/Architecture/webrenderer.md b/Blackboard/Architecture/webrenderer.md new file mode 100644 index 00000000..2365976c --- /dev/null +++ b/Blackboard/Architecture/webrenderer.md @@ -0,0 +1,97 @@ +# WebRenderer UPnP privé par navigateur + +## Vue d'ensemble + +Le crate `pmowebrenderer` transforme chaque navigateur connecté en un **MediaRenderer UPnP privé**. Quand un navigateur se connecte via WebSocket, le backend Rust crée dynamiquement un device UPnP dédié. Le ControlPoint envoie des commandes SOAP à ce device, et les action handlers les relaient au navigateur via WebSocket. Le navigateur joue l'audio via `