// Create server mais aucun appel à http.createServer().
Le serveur ne pouvait pas démarrer. Ajout de la création complète : serveur HTTP/HTTPS, body parser express.json(),
CORS, fichiers statiques, et redirection HTTP→HTTPS.
readline.createInterface() sur process.stdin en parallèle (sections 5c et 40).
Les lettres tapées se répartissaient aléatoirement entre les deux — pseudo illisible ("trtrtrttrtttttt").
Fusionné en un seul readline séquentiel : nom serveur → pseudo → démarrage.
warnCount >= cfg.maxWarns || 3 s'évaluait comme
(warnCount >= cfg.maxWarns) || 3 → toujours truthy. Chaque message filtré déclenchait un kick immédiat.
using(var rs = r.GetRequestStream()).
HashSet<string> seen du client n'était jamais nettoyé. Après des heures de chat,
il consommait des dizaines de Mo. Ajout d'un cap à 2000 entrées avec reset automatique.
/poll?since=N → réduit de moitié le trafic réseau.
compression (niveau 6). Les réponses JSON volumineuses (liste salons, messages)
sont compressées à ~30% de leur taille. Dégradation gracieuse si le module est absent.
maxAge sur les fichiers statiques : emoticons (7 jours), banners/decor/public (1 jour).
Les clients ne re-téléchargent plus les emoticons à chaque connexion.
KeepAlive=true activé sur toutes les requêtes HTTP client → réutilisation des connexions TCP.
Expect100Continue=false → supprime un aller-retour inutile sur chaque POST.
setTimeout : 30s→60s, ajout headersTimeout: 65s.
Évite les déconnexions sur connexions lentes (3G, VPN).
ConnectionLimit : 50→100.
SecurityProtocolType 12288 (TLS 1.3) et 3072 (TLS 1.2 explicite)
en fallback cascade. Compatible Windows 11 + serveurs modernes.
using SWF=System.Windows.Forms mais la DLL n'était pas référencée
dans compile.bat → erreur de compilation silencieuse. Ajouté dans LANCER.bat.
chcp 65001.
Les chemins avec espaces (Ludovic MINOT) cassaient les redirections >>.
Tout réécrit en ASCII pur + chemins relatifs après cd /d. Commande csc sur une seule ligne.
MODE==='desktop' qui échouait selon la config.
Remplacé par isLocal(getIP(req)) — détecte directement si la requête vient de 127.0.0.1.
Vrai check Logs ajouté (vérifie existence réelle des dossiers).
npm install →
compilation C# → pare-feu → dossiers → démarrage serveur + GUI.
Côté client : compilation → lancement. Un double-clic suffit.