UK
apps/caramail-chat / README.md · commit 6eebcdb
# CaraChatLe client de chat **Caramail de 2002** (applet Java `net.spray.chat`, `normal.jar`) recréé en PHP avec JumPHP\Gui :même protocole TCP, même interface (onglets Salons / Rechercher / Infos / salon / privés, présents, couleurs,tailles, arc-en-ciel et vague) et **les smileys d'origine redessinés au pixel près** à partir du code de dessin del'applet. Le serveur est le projet **caramail-server** (Docker, port 4500).```bashbin/jumphp install caramail-chatbin/jumphp run caramail-chat          # la fenêtre (serveur : localhost:4500 par défaut)bin/jumphp test caramail-chat         # protocole, smileys comparés aux rendus de l'applet, fenêtres pilotéesbin/jumphp build caramail-chat        # la version navigateur (dist/web)```Le serveur par défaut est celui de jumphp.net, en WebSocket sur le port 443 : `wss://caramail.jumphp.net/ws`(`src/Net/WsLink.php`, php-wasm-network : le même code dans le navigateur et sur PC ; aucune autorisation TCPnécessaire). Une adresse `hôte:port` dans le champ Serveur passe en TCP brut (`TcpLink`, le pont TCP dans le navigateur).L'interface reproduit l'applet : composants AWT redessinés (`src/Gui/Awt*.php`, `Etched`, `TabBar`, `ChatList` avecsa barre de défilement), police Liberation Sans (métrique Helvetica/Arial, OFL). Sur téléphone (moins de 600 dp)les pages s'empilent et un bouton « Membres » ouvre la liste des présents.## Fonctions- connexion (pseudo, âge, ville, sexe, serveur, clé modérateur facultative) : le profil part dans le `tempid` ;- salon : phrases colorées, pseudo coloré selon le profil (rose / bleu / modérateur), en gras quand on vous parle,  clic sur une ligne = `pseudo> ` devant votre phrase, double-clic = privé ;- `/pseudo message` depuis le salon envoie un privé ; onglets privés (20 au plus) qui passent en orange ;- salons permanents / des membres, création d'un salon public ou privé ;- recherche par pseudo ou ville, âge et sexe, nombre de connectés ;- Infos : messages du serveur et des modérateurs, « pas de nouveaux privés », occupé, phrase d'accroche,  appel d'un modérateur ; ignorer / autoriser, éjecter (modérateur) ;- smileys : `:-)`, `;-)`, `8-)`, `:o)`, `:#)`… (le nez est obligatoire), un chiffre colore le visage, `#c` / `#d`  ajoutent une main, `#00`..`#14` sont des dessins (cœur `#13`).## Rétro-ingénierieLe jar (obfusqué RetroGuard) a été lu au `javap -c` : `net.spray.chat.normal.b` (IHM + réseau),`net.spray.chat.a.g` (rendu du texte et smileys), `a.d` (onglets), `a.c` (palette de smileys), `a.j` (défilement).Le code de dessin des smileys est devenu `assets/smileys/ops.json` ; `tests/SmileysTest.php` compare le rendu PHP àdes rendus de référence de l'applet (0 pixel d'écart). `smiley.gif` (les smileys `@NN`) était sur l'ancien site etn'est pas dans le jar : ces codes restent du texte.Crédits : applet Caramail (Spray, 2002) ; serveur « NewCaraChat v1.00 By Duch » (2012). Recréation non officielle.