Bonjour,
Je travaille actuellement sur un module de chat pour XOOPS et je voulais partager avec vous l’avancement ainsi que quelques images du chat en question. À ce stade, seule la section de chat privé entre utilisateurs est fonctionnelle.
Cependant, j’ai l’intention d’ajouter une section publique qui permettra d’interagir avec les utilisateurs en ligne connectés sur un site XOOPS.
Je ne suis pas certain de l’utilité générale d’un tel module, mais je n’ai pas trouvé de module de chat en temps réel déjà existant pour XOOPS. Si cela vous intéresse, je serais ravi d’avoir votre avis sur les fonctionnalités ou des suggestions d’amélioration.
Qu’en pensez-vous ?
1. Fonctionnalités principales :
Chat en temps réel :
Envoi et réception instantanée des messages via WebSocket.
Détection des utilisateurs en ligne, mise à jour dynamique de la liste d'amis connectés.
Indicateur d'activité "en train d'écrire", affiché en temps réel dans le chat de l'autre utilisateur.
Gestion des messages :
Support des messages texte, des smileys, et des fichiers images.
Les smileys sont intégrés via des codes comme :smiley_1:, automatiquement transformés en images.
Validation des messages avec une limite de 1000 caractères, bloquant l'écriture au-delà.
Sauvegarde des messages dans la base de données MySQL.
Interface utilisateur intuitive :
Fenêtres de chat détachables et redimensionnables.
Défilement automatique vers le dernier message à l'ouverture d'une discussion.
Gestion ergonomique des zones de texte et des boutons d'action.
2. Points techniques importants :
Architecture backend :
Serveur WebSocket basé sur Ratchet pour une communication bidirectionnelle en temps réel.
Gestion des connexions et des déconnexions avec mise à jour automatique des utilisateurs en ligne.
Diffusion ciblée des messages et des notifications ("en train d'écrire", "stop typing").
Frontend dynamique :
Utilisation de JavaScript pour ouvrir les fenêtres de chat, gérer les interactions utilisateur, et envoyer les données au serveur.
Intégration d'un observer pour garantir le défilement automatique des messages lorsque de nouveaux contenus sont ajoutés.
Base de données :
Les messages sont enregistrés avec les champs sender_id, receiver_id, message, et created_at.
Gestion des utilisateurs connectés via des données de session.