.. _api-server: Module Serveur et Réseau (``mirza.server``) ============================================ Le module ``mirza.server`` expose la plateforme via un serveur HTTP/WebSocket sécurisé et gère la diffusion temps réel des événements vers les clients connectés. .. contents:: Sommaire :local: :depth: 1 ---- Vue d'Ensemble du Serveur -------------------------- .. list-table:: Endpoints exposés par le serveur :widths: 25 15 60 :header-rows: 1 * - Endpoint - Méthode - Description * - ``/ws`` - WebSocket - Canal bidirectionnel principal — JSON + binaire ArrayBuffer * - ``/`` - GET - Sert ``widget/dist/index.html`` (frontend React compilé) * - ``/assets/*`` - GET - Fichiers statiques JS, CSS, icônes du widget .. list-table:: Modes de démarrage :widths: 20 80 :header-rows: 1 * - Mode - Description * - ``--server`` - HTTP sur le port 8000 (développement local) * - ``--server --ssl`` - HTTPS/WSS avec TLS auto-signé sur le port 8443 ---- Diffuseur d'Événements (``EventBroadcaster``) ---------------------------------------------- .. important:: ``EventBroadcaster.broadcastEvent()`` est **thread-safe** : il peut être appelé depuis n'importe quel thread Python (LLM, TTS, orchestrateur) et utilise ``asyncio.run_coroutine_threadsafe()`` pour injecter les messages dans la boucle ASGI. .. automodule:: mirza.server.eventBroadcaster :members: :undoc-members: :show-inheritance: ---- Serveur FastAPI et Passerelle WebSocket (``WidgetServer``) ----------------------------------------------------------- .. automodule:: mirza.server.widgetServer :members: :undoc-members: :show-inheritance: ---- Gestionnaire de Certificats TLS (``SslManager``) -------------------------------------------------- .. note:: ``SslManager`` génère un certificat **auto-signé X.509** valable 1 an au premier démarrage et le réutilise lors des démarrages suivants. Il dépose les fichiers ``cert.pem`` et ``key.pem`` dans le répertoire courant de l'application. .. automodule:: mirza.server.sslManager :members: :undoc-members: :show-inheritance: