docs: Documentation WebSocket et corrections
All checks were successful
build-and-push-ext / build_push (push) Successful in 7s
All checks were successful
build-and-push-ext / build_push (push) Successful in 7s
- Ajout de docs/WEBSOCKET_CONFIGURATION.md - Gestion d'erreurs WebSocket améliorée - Tests WebSocket documentés - Problème persistant Nginx documenté
This commit is contained in:
parent
f318140d59
commit
86e7a4eee6
@ -5,6 +5,12 @@ Toutes les modifications notables de ce projet seront documentées ici.
|
|||||||
Format inspiré de Keep a Changelog et versionnage SemVer.
|
Format inspiré de Keep a Changelog et versionnage SemVer.
|
||||||
|
|
||||||
## [Unreleased]
|
## [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
|
### Ajouts
|
||||||
- **Configuration externalisée avancée** : Ajout des variables d'environnement `WS_BIND_URL`, `HEALTH_PORT`, `HEALTH_BIND_ADDRESS`
|
- **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
|
- **Configuration externalisée** : Ajout de la variable d'environnement `SDK_RELAY_WS_URL` pour les tests
|
||||||
|
@ -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`)
|
- `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_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`)
|
- `HEALTH_BIND_ADDRESS` : Adresse de binding du serveur de santé (défaut: `0.0.0.0`)
|
||||||
|
|
||||||
## Configuration WebSocket
|
### Configuration dans sdk_relay.conf
|
||||||
Le relay accepte uniquement les connexions WebSocket valides avec les headers :
|
```ini
|
||||||
- `Upgrade: websocket`
|
ws_url="0.0.0.0:8090"
|
||||||
- `Connection: upgrade`
|
blindbit_url="http://blindbit-oracle:8000"
|
||||||
- `Sec-WebSocket-Version: 13`
|
bootstrap_url="wss://dev3.4nkweb.com/ws/"
|
||||||
- `Sec-WebSocket-Key: [base64-encoded-key]`
|
bootstrap_faucet=true
|
||||||
|
sp_address="tsp1qqgmwp9n5p9ujhq2j6cfqe4jpkyu70jh9rgj0pwt3ndezk2mrlvw6jqew8fhsulewzglfr7g2aa48wyj4n0r7yasa3fm666vda8984ke8tuaf9m89"
|
||||||
## Réponse attendue
|
RUST_LOG="INFO"
|
||||||
```
|
|
||||||
HTTP/1.1 101 Switching Protocols
|
|
||||||
connection: Upgrade
|
|
||||||
upgrade: websocket
|
|
||||||
sec-websocket-accept: [calculated-accept-key]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Rejet des requêtes HTTP
|
## Problèmes résolus
|
||||||
Les requêtes HTTP simples sont rejetées avec l'erreur :
|
|
||||||
`WebSocket protocol error: Unsupported HTTP method used - only GET is allowed`
|
|
||||||
|
|
||||||
## Date
|
### 1. Binding sur 127.0.0.1 au lieu de 0.0.0.0
|
||||||
2025-09-20
|
**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
|
Loading…
x
Reference in New Issue
Block a user