diff --git a/CHANGELOG.md b/CHANGELOG.md index d66ef93..544ae7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ Toutes les modifications notables de ce projet seront documentées ici. Format inspiré de Keep a Changelog et versionnage SemVer. ## [Unreleased] +### Corrections WebSocket et configuration +- **Documentation WebSocket** : Ajout de `docs/WEBSOCKET_CONFIGURATION.md` avec analyse complète +- **Gestion d'erreurs WebSocket** : Amélioration avec `log::warn!` pour les tentatives de connexion non-WebSocket +- **Tests WebSocket** : Documentation des tests avec headers corrects et incorrects +- **Problème persistant** : Nginx ne transmet pas les headers WebSocket (investigation en cours) + ### Ajouts - **Configuration externalisée avancée** : Ajout des variables d'environnement `WS_BIND_URL`, `HEALTH_PORT`, `HEALTH_BIND_ADDRESS` - **Configuration externalisée** : Ajout de la variable d'environnement `SDK_RELAY_WS_URL` pour les tests diff --git a/docs/WEBSOCKET_CONFIGURATION.md b/docs/WEBSOCKET_CONFIGURATION.md index c4d7d43..54025c5 100644 --- a/docs/WEBSOCKET_CONFIGURATION.md +++ b/docs/WEBSOCKET_CONFIGURATION.md @@ -1,28 +1,68 @@ -# Configuration WebSocket - SDK Relay +# Configuration WebSocket - sdk_relay -## Variables d'environnement +## Configuration actuelle + +### Variables d'environnement - `WS_BIND_URL` : URL de binding WebSocket (défaut: `0.0.0.0:8090`) - `HEALTH_PORT` : Port du serveur de santé (défaut: `8091`) - `HEALTH_BIND_ADDRESS` : Adresse de binding du serveur de santé (défaut: `0.0.0.0`) -## Configuration WebSocket -Le relay accepte uniquement les connexions WebSocket valides avec les headers : -- `Upgrade: websocket` -- `Connection: upgrade` -- `Sec-WebSocket-Version: 13` -- `Sec-WebSocket-Key: [base64-encoded-key]` - -## Réponse attendue -``` -HTTP/1.1 101 Switching Protocols -connection: Upgrade -upgrade: websocket -sec-websocket-accept: [calculated-accept-key] +### Configuration dans sdk_relay.conf +```ini +ws_url="0.0.0.0:8090" +blindbit_url="http://blindbit-oracle:8000" +bootstrap_url="wss://dev3.4nkweb.com/ws/" +bootstrap_faucet=true +sp_address="tsp1qqgmwp9n5p9ujhq2j6cfqe4jpkyu70jh9rgj0pwt3ndezk2mrlvw6jqew8fhsulewzglfr7g2aa48wyj4n0r7yasa3fm666vda8984ke8tuaf9m89" +RUST_LOG="INFO" ``` -## Rejet des requêtes HTTP -Les requêtes HTTP simples sont rejetées avec l'erreur : -`WebSocket protocol error: Unsupported HTTP method used - only GET is allowed` +## Problèmes résolus -## Date -2025-09-20 +### 1. Binding sur 127.0.0.1 au lieu de 0.0.0.0 +**Problème :** Le relay se liait sur `127.0.0.1:8090` au lieu de `0.0.0.0:8090`. + +**Solution :** Externalisation de la configuration via variables d'environnement et correction du code Rust. + +### 2. Gestion des erreurs WebSocket +**Problème :** Erreurs de handshake WebSocket non gérées correctement. + +**Solution :** Amélioration de la gestion d'erreurs avec `log::warn!` au lieu de `log::error!` pour les tentatives de connexion non-WebSocket. + +### 3. Configuration externalisée +**Problème :** IP et ports hardcodés dans le code Rust. + +**Solution :** Externalisation de tous les paramètres de configuration via variables d'environnement. + +## Tests WebSocket + +### Test avec headers corrects +```bash +curl -v -H "Upgrade: websocket" \ + -H "Connection: upgrade" \ + -H "Sec-WebSocket-Version: 13" \ + -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \ + http://127.0.0.1:8090/ +``` + +**Résultat attendu :** `HTTP/1.1 101 Switching Protocols` + +### Test sans headers WebSocket +```bash +curl -v http://127.0.0.1:8090/ +``` + +**Résultat attendu :** Erreur de handshake WebSocket (normal) + +## Problème persistant + +### Nginx ne transmet pas les headers WebSocket +**Statut :** ⚠️ Problème persistant +- Nginx configuré avec tous les headers WebSocket +- Le relay reçoit toujours des connexions sans headers +- Erreur : `"No Upgrade: websocket header"` + +**Investigation :** La configuration Nginx semble correcte mais les headers ne sont pas transmis. + +## Date de mise à jour +2025-01-20 - Configuration WebSocket externalisée et problèmes de binding résolus \ No newline at end of file