FastComments.com

FastComments Image Chat permet des discussions interactives sur des images en permettant aux utilisateurs de cliquer n'importe où sur une image pour créer des points de discussion. Les utilisateurs peuvent cliquer sur des parties spécifiques des images pour lancer des conversations à propos de ces zones, créant des repères visuels qui montrent où se situent les discussions.

Cette fonctionnalité est idéale pour les retours de conception, les avis sur les produits, les supports pédagogiques contenant des schémas, les galeries de photos avec commentaires, et tout scénario où vous souhaitez des discussions contextuelles ancrées à des emplacements spécifiques d'une image.

Design réactif Internal Link

Positionnement basé sur des pourcentages

Image Chat utilise des coordonnées basées sur des pourcentages au lieu de coordonnées en pixels pour positionner les marqueurs de discussion sur les images. Lorsqu'un utilisateur clique sur une image, le widget convertit les coordonnées en pixels du clic en pourcentages de la largeur et de la hauteur de l'image. Cette approche garantit que les marqueurs restent à la bonne position quelle que soit la façon dont l'image est affichée.

Par exemple, si un utilisateur clique à 250 pixels du bord gauche d'une image de 1000px de large, le widget enregistre cela comme étant à 25% depuis la gauche. Quand un autre utilisateur affiche la même image à 500px de large sur un appareil mobile, le marqueur apparaît à 125 pixels du bord gauche, ce qui représente toujours 25% de la largeur.

Avantages pour les mises en page adaptatives

Ce système en pourcentage permet à Image Chat de fonctionner de manière fluide sur toutes les tailles d'appareils et orientations. Vos images peuvent être affichées à différentes tailles selon la largeur de l'écran, les règles CSS ou les contraintes du conteneur, mais les marqueurs s'alignent toujours correctement avec les emplacements prévus.

Les utilisateurs sur ordinateurs de bureau avec de grands écrans voient les marqueurs aux mêmes positions relatives que les utilisateurs sur smartphones. Les marqueurs se redimensionnent proportionnellement avec l'image elle-même.

Mise à l'échelle de l'image et rapport d'aspect

Tant que votre image conserve son rapport d'aspect lors du redimensionnement (ce qui est le comportement par défaut du navigateur), les marqueurs basés sur des pourcentages resteront parfaitement alignés. Le widget part du principe que les images se redimensionnent proportionnellement et calcule les positions en se basant sur cette hypothèse.

Si vous appliquez du CSS qui déforme le rapport d'aspect de l'image (comme en utilisant object-fit: cover avec des dimensions spécifiques), les positions des marqueurs peuvent ne pas s'aligner correctement. Pour de meilleurs résultats, laissez les images se redimensionner naturellement ou utilisez object-fit: contain pour conserver le rapport d'aspect.

Taille des carrés de chat

La taille visuelle des marqueurs de chat est également basée sur des pourcentages. L'option de configuration chatSquarePercentage est par défaut à 5%, ce qui signifie que chaque carré représente 5% de la largeur de l'image. Cela garantit un poids visuel cohérent sur différentes tailles d'images.

Sur une image de 1000px de large avec le paramètre par défaut de 5%, les marqueurs font 50px de côté. Sur une image de 500px de large, les mêmes marqueurs font 25px de côté. Ils restent proportionnels à la taille de l'image.

Comportement sur mobile

Sur les écrans de moins de 768px de large, Image Chat passe à une disposition optimisée pour mobile. Les fenêtres de discussion s'ouvrent en plein écran au lieu de flotter à côté du marqueur. Ceci offre une meilleure utilisabilité sur les petits écrans où les fenêtres flottantes cacheraient trop l'image.

Les marqueurs eux-mêmes restent visibles et cliquables à leurs positions basées sur des pourcentages. Les utilisateurs peuvent toujours voir où se situent toutes les discussions et toucher les marqueurs pour ouvrir l'interface de chat en plein écran.

Chargement dynamique des images

Le système basé sur des pourcentages fonctionne correctement même lorsque les images se chargent de manière asynchrone ou changent de taille après le chargement de la page. Le widget surveille l'élément image et recalculera les positions des marqueurs chaque fois que les dimensions de l'image changent.

Si vous chargez les images paresseusement (lazy-loading) ou si vous mettez en œuvre des images responsives avec différentes tailles selon les points d'arrêt, les marqueurs s'ajusteront automatiquement lorsque la taille de l'image changera.

Cohérence entre appareils

Parce que les coordonnées sont stockées en pourcentages dans la base de données, une discussion créée sur un ordinateur de bureau apparaît exactement au même emplacement relatif lorsqu'elle est consultée sur une tablette ou un téléphone. Les utilisateurs peuvent collaborer entre appareils sans incohérences de positionnement.

Cela fonctionne dans les deux sens. Une discussion créée en touchant un emplacement précis sur un appareil mobile apparaîtra au même emplacement relatif lorsqu'elle sera consultée sur un grand écran d'ordinateur de bureau.

Considérations liées à la zone d'affichage

Le widget calcule les pourcentages par rapport à l'élément image lui-même, et non par rapport à la zone d'affichage. Cela signifie que faire défiler la page ou modifier la taille de la fenêtre du navigateur n'affecte pas les positions des marqueurs. Les marqueurs restent ancrés à leurs emplacements sur l'image, indépendamment des changements de la zone d'affichage.

Préparation du contenu pour l'avenir

L'approche basée sur des pourcentages rend vos discussions sur les images résilientes aux changements de mise en page, de design ou d'écosystème d'appareils. À mesure que de nouvelles tailles d'écran et de nouveaux appareils apparaissent, les discussions existantes continueront de s'afficher correctement sans nécessiter de mises à jour ou de migrations.

Personnalisation Internal Link

Prise en charge du mode sombre

Image Chat inclut une prise en charge du mode sombre intégrée. Lorsque vous définissez hasDarkBackground: true dans votre configuration, les fenêtres de chat et les éléments d'interface s'ajustent automatiquement pour bien fonctionner sur des arrière-plans sombres.

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    hasDarkBackground: true
});

Le style du mode sombre s'applique aux fenêtres de chat, aux carrés marqueurs et à tous les éléments interactifs. Si votre site dispose d'un commutateur de mode sombre, vous pouvez réinitialiser le widget lorsque le mode change, ou utiliser l'approche de classe body décrite ci-dessous.

Mode sombre dynamique

Si le mode sombre de votre site est contrôlé en ajoutant une classe .dark à l'élément body, l'interface Image Chat respectera automatiquement cela sans nécessiter de réinitialisation. Les styles du widget sont conçus pour répondre à la présence de cette classe.

/* Votre CSS pour le mode sombre */
body.dark {
    background: #1a1a1a;
    color: #ffffff;
}

Personnalisation via CSS

Vous pouvez personnaliser l'apparence des marqueurs, des fenêtres de chat et d'autres éléments en utilisant du CSS. Le widget ajoute des classes spécifiques que vous pouvez cibler dans votre feuille de style.

Les carrés et fenêtres de chat utilisent le système de style de bulles de commentaire FastComments, donc toutes les personnalisations que vous avez appliquées au widget de commentaire standard affecteront également Image Chat.

Taille des carrés de chat

L'option chatSquarePercentage contrôle la taille des marqueurs cliquables. La valeur par défaut est 5 % de la largeur de l'image :

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    chatSquarePercentage: 7  // Carrés plus grands et plus visibles
});

Des valeurs plus petites créent des marqueurs plus subtils qui se fondent dans l'image. Des valeurs plus grandes rendent les marqueurs plus visibles et plus faciles à cliquer, notamment sur les appareils mobiles ou pour des raisons d'accessibilité.

Comportement sur mobile

Sur les écrans de moins de 768px de large, Image Chat bascule automatiquement vers une mise en page optimisée pour mobile. Les fenêtres de chat apparaissent en plein écran au lieu de flotter à côté des marqueurs, offrant une meilleure utilisabilité sur les petits écrans.

Les marqueurs restent visibles à leurs positions adaptatives sur l'image. Les utilisateurs peuvent toucher un marqueur pour ouvrir l'interface de chat en plein écran. Ce comportement est intégré et ne nécessite aucune configuration.

Apparence des fenêtres de chat

Les fenêtres de chat mesurent 300px de large sur desktop avec une flèche de 16px pointant vers le marqueur. Les fenêtres se positionnent automatiquement en fonction de l'espace disponible dans la fenêtre d'affichage, en utilisant des classes de positionnement comme to-right, to-left, to-top et to-bottom.

Vous pouvez ajouter du CSS personnalisé pour ajuster les couleurs, les polices, les espacements ou d'autres propriétés visuelles de ces fenêtres. Les fenêtres de chat utilisent la même structure de composant que le widget FastComments standard, elles héritent donc de toutes les personnalisations globales que vous avez appliquées.

Initialisation différée

Les fenêtres de chat s'initialisent au survol pour les utilisateurs desktop ou immédiatement lorsqu'elles sont créées. Cela réduit la charge initiale en ne rendant l'interface de chat que lorsque les utilisateurs interagissent réellement avec un marqueur.

L'initialisation différée se produit de manière transparente. Les utilisateurs ne remarquent aucun délai, mais le navigateur n'a pas besoin de rendre des dizaines de fenêtres de chat cachées si vous avez de nombreux marqueurs sur une image.

Localisation

Image Chat prend en charge toutes les mêmes options de localisation que le widget FastComments standard. Définissez l'option locale pour afficher le texte de l'interface dans différentes langues :

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    locale: 'fr'  // Français
});

FastComments prend en charge des dizaines de langues. Le paramètre locale affecte tous les textes de l'interface, y compris les invites, les boutons et le texte des champs d'espace réservé.

Options de personnalisation héritées

Puisque Image Chat étend le widget de commentaires standard, il hérite de toutes les options de personnalisation du widget de base. Cela inclut les classes CSS personnalisées, les traductions personnalisées, la personnalisation des avatars, le formatage des dates, et bien plus encore.

Consultez la documentation principale de personnalisation de FastComments pour la liste complète des options de personnalisation disponibles.

Utilisation de polices personnalisées

Si votre site utilise des polices personnalisées, l'interface Image Chat héritera de ces polices depuis le CSS de votre page. Les fenêtres de chat sont rendues dans le DOM de votre page et respectent vos paramètres typographiques existants.

Pour de meilleurs résultats, assurez-vous que vos polices personnalisées sont chargées avant d'initialiser Image Chat, ou acceptez qu'il puisse y avoir un bref flash de texte non stylé pendant le chargement des polices.

Design visuel des marqueurs

Les marqueurs carrés ont un design visuel subtil qui les rend remarquables sans surcharger l'image. Vous pouvez personnaliser leur apparence avec du CSS si vous souhaitez un traitement visuel différent.

Les marqueurs incluent des états de survol qui fournissent un retour visuel lorsque les utilisateurs déplacent leur souris dessus. Sur les appareils tactiles, l'interaction par toucher fournit un retour immédiat en ouvrant la fenêtre de chat.

Synchronisation en temps réel Internal Link

Real-Time Updates

Image Chat utilise des connexions WebSocket pour synchroniser toutes les conversations en temps réel entre tous les utilisateurs connectés. Lorsqu'une personne crée un nouveau marqueur, ajoute un commentaire ou supprime une discussion, tous les autres utilisateurs visualisant la même image voient la mise à jour immédiatement sans recharger.

How WebSocket Sync Works

Lorsque vous initialisez Image Chat, le widget établit une connexion WebSocket avec les serveurs FastComments. Cette connexion reste ouverte pendant la durée de la session de l'utilisateur et écoute les mises à jour liées à l'image en cours.

Le système WebSocket utilise trois types de messages de diffusion pour Image Chat. L'événement new-image-chat se déclenche lorsqu'une personne crée un nouveau marqueur sur l'image. L'événement image-chat-updated se déclenche lorsqu'une personne met à jour une conversation existante. L'événement deleted-image-chat se déclenche lorsqu'une personne supprime un marqueur.

Broadcast ID System

Pour éviter les effets d'écho où les utilisateurs voient leurs propres actions leur être renvoyées, chaque mise à jour inclut un broadcastId unique. Lorsqu'un utilisateur crée ou met à jour un marqueur, son client génère un UUID pour cette opération. Lorsque le WebSocket diffuse la mise à jour à tous les clients, le client d'origine ignore la mise à jour parce qu'elle correspond à son propre broadcastId.

Cela garantit une interaction fluide où les utilisateurs voient leurs modifications immédiatement dans l'interface utilisateur sans attendre l'aller-retour via le serveur, tout en assurant que tous les autres utilisateurs reçoivent la mise à jour.

Connection Resilience

Si la connexion WebSocket est interrompue en raison de problèmes réseau ou de maintenance serveur, le widget tente automatiquement de se reconnecter. Pendant la période de reconnexion, les utilisateurs peuvent toujours interagir avec les marqueurs existants, mais ils ne verront pas les mises à jour en temps réel des autres utilisateurs tant que la connexion n'est pas rétablie.

Une fois reconnecté, le widget resynchronise pour s'assurer qu'aucune mise à jour n'a été manquée. Cela se produit de manière transparente sans nécessiter l'intervention de l'utilisateur.

Bandwidth Considerations

Les messages WebSocket sont légers et contiennent uniquement les informations essentielles nécessaires pour synchroniser l'état. La création d'un nouveau marqueur utilise généralement moins de 1 Ko de bande passante. Le système inclut également un regroupement intelligent pour réduire la fréquence des messages pendant les périodes d'activité élevée.

Vos métriques d'utilisation dans le tableau de bord FastComments suivent pubSubMessageCount et pubSubBandwidth afin que vous puissiez surveiller l'activité de synchronisation en temps réel sur vos sites.

Cross-Tab Synchronization

Si un utilisateur a la même page ouverte dans plusieurs onglets du navigateur, les mises à jour dans un onglet apparaissent immédiatement dans les autres onglets. Cela fonctionne via le même mécanisme de synchronisation WebSocket et ne nécessite aucune configuration supplémentaire.

Les utilisateurs peuvent avoir votre site ouvert sur plusieurs appareils simultanément, et tous resteront synchronisés. Un marqueur créé sur un ordinateur de bureau apparaît instantanément sur la tablette de l'utilisateur si les deux appareils affichent la même image.

Security

Les messages WebSocket sont transmis sur des connexions sécurisées (WSS) et incluent une validation du locataire pour garantir que les utilisateurs ne reçoivent que les mises à jour des conversations qu'ils sont autorisés à voir. Le serveur valide toutes les opérations avant de les diffuser afin d'empêcher tout accès ou manipulation non autorisée.

Offline Behavior

Lorsque les utilisateurs sont complètement hors ligne, ils peuvent toujours consulter les marqueurs existants mais ne peuvent pas en créer de nouveaux ni voir les mises à jour des autres. Le widget détecte l'état hors ligne et affiche un message approprié.

Si un utilisateur tente de créer un marqueur en étant hors ligne puis revient en ligne, l'opération échouera plutôt que d'être mise en file d'attente, garantissant la cohérence des données. Les utilisateurs doivent réessayer l'opération une fois leur connexion rétablie.

Performance Impact

La connexion WebSocket a un impact minimal sur les performances. La connexion reste en veille lorsqu'aucune mise à jour n'a lieu et ne traite les messages que lorsqu'il y a de l'activité. Sur une image typique avec une activité modérée de marqueurs, le WebSocket utilise moins de CPU que le rendu de l'image lui‑même.

Pour les pages avec des centaines d'utilisateurs simultanés et une forte création de marqueurs, le système s'étend horizontalement pour maintenir les performances sans impacter les connexions des clients individuels.

Collaborative Use Cases

La synchronisation en temps réel rend Image Chat particulièrement puissant pour les flux de travail collaboratifs. Les équipes de conception peuvent revoir des maquettes ensemble en voyant tous les emplacements de marqueurs en temps réel. Les équipes d'assistance client peuvent annoter des captures d'écran de manière collaborative pour identifier des problèmes. Les groupes éducatifs peuvent discuter de diagrammes avec tous les participants voyant les marqueurs des autres au fur et à mesure de leur création.

Le retour immédiat crée une expérience collaborative plus engageante et productive comparée aux systèmes de commentaires traditionnels où les utilisateurs doivent rafraîchir pour voir les mises à jour.

Des questions ?

Voilà pour FastComments Image Chat ! Si vous avez des questions, besoin d'aide pour la mise en œuvre, ou des suggestions de fonctionnalités, faites-le nous savoir ci-dessous ou contactez notre équipe d'assistance.

Découvrez la démo en direct sur notre page de démonstration pour voir Image Chat en action.