FastComments.com

FastComments Image Chat permite discusiones interactivas sobre imágenes al permitir que los usuarios hagan clic en cualquier parte de una imagen para crear puntos de discusión. Los usuarios pueden hacer clic en partes específicas de las imágenes para iniciar conversaciones sobre esas áreas, creando marcadores visuales que muestran dónde se ubican las discusiones.

Esta función es perfecta para comentarios de diseño, reseñas de productos, materiales educativos con diagramas, galerías de fotos con comentarios, y cualquier escenario en el que desees discusiones contextuales ancladas a ubicaciones específicas de la imagen.

Diseño adaptable Internal Link

Posicionamiento basado en porcentajes

Image Chat utiliza coordenadas basadas en porcentajes en lugar de coordenadas en píxeles para posicionar los marcadores de chat en las imágenes. Cuando un usuario hace clic en una imagen, el widget convierte las coordenadas en píxeles del clic en porcentajes respecto al ancho y alto de la imagen. Este enfoque garantiza que los marcadores permanezcan en la ubicación correcta independientemente de cómo se muestre la imagen.

Por ejemplo, si un usuario hace clic a 250 píxeles desde el borde izquierdo de una imagen de 1000px de ancho, el widget lo almacena como 25% desde la izquierda. Cuando otro usuario ve la misma imagen a 500px de ancho en un dispositivo móvil, el marcador aparece a 125 píxeles desde la izquierda, que sigue siendo el 25% del ancho.

Beneficios para diseños responsivos

Este sistema de porcentajes hace que Image Chat funcione sin problemas en todos los tamaños de dispositivo y orientaciones. Sus imágenes pueden mostrarse en tamaños diferentes según el ancho de pantalla, las reglas de CSS o las restricciones del contenedor, pero los marcadores siempre se alinean correctamente con las ubicaciones previstas.

Los usuarios en ordenadores de sobremesa con monitores grandes ven los marcadores en las mismas posiciones relativas que los usuarios en smartphones con pantallas pequeñas. Los marcadores se escalan proporcionalmente con la propia imagen.

Escalado de imagen y relación de aspecto

Siempre que su imagen mantenga su relación de aspecto al escalar (que es el comportamiento predeterminado del navegador), los marcadores basados en porcentajes permanecerán perfectamente alineados. El widget asume que las imágenes se escalan proporcionalmente y calcula las posiciones basándose en esta suposición.

Si aplica CSS que distorsione la relación de aspecto de la imagen (por ejemplo usando object-fit: cover con dimensiones específicas), las posiciones de los marcadores pueden no alinearse correctamente. Para obtener mejores resultados, permita que las imágenes se escalen de forma natural o use object-fit: contain para mantener la relación de aspecto.

Tamaño del cuadrado de chat

El tamaño visual de los marcadores de chat también se basa en porcentajes. La opción de configuración chatSquarePercentage tiene por defecto 5%, lo que significa que cada cuadrado ocupa el 5% del ancho de la imagen. Esto asegura un peso visual consistente entre distintos tamaños de imagen.

En una imagen de 1000px de ancho con la configuración predeterminada del 5%, los marcadores tienen 50px de lado. En una imagen de 500px de ancho, los mismos marcadores tienen 25px de lado. Permanecen proporcionales al tamaño de la imagen.

Comportamiento en móviles

En pantallas de menos de 768px de ancho, Image Chat cambia a un diseño optimizado para móviles. Las ventanas de chat se abren a pantalla completa en vez de flotar junto al marcador. Esto ofrece mejor usabilidad en pantallas pequeñas donde las ventanas flotantes oscurecerían demasiado la imagen.

Los propios marcadores permanecen visibles y clicables en sus posiciones basadas en porcentajes. Los usuarios aún pueden ver dónde están ubicadas todas las discusiones y tocar los marcadores para abrir la interfaz de chat a pantalla completa.

Carga dinámica de imágenes

El sistema basado en porcentajes funciona correctamente incluso cuando las imágenes se cargan de forma asíncrona o cambian de tamaño después de cargar la página. El widget supervisa el elemento de la imagen y recalcula las posiciones de los marcadores cada vez que cambian las dimensiones de la imagen.

Si está usando carga diferida (lazy-loading) de imágenes o implementando imágenes responsivas con diferentes tamaños en distintos puntos de ruptura, los marcadores se ajustan automáticamente cuando cambia el tamaño de la imagen.

Consistencia entre dispositivos

Porque las coordenadas se almacenan como porcentajes en la base de datos, una discusión creada en un equipo de escritorio aparece en la misma ubicación relativa exacta cuando se ve en una tableta o teléfono. Los usuarios pueden colaborar entre dispositivos sin inconsistencias de posicionamiento.

Esto funciona en ambas direcciones. Una discusión creada al tocar un punto específico en un dispositivo móvil aparece en la misma posición relativa cuando se visualiza en un monitor grande de escritorio.

Consideraciones sobre el viewport

El widget calcula los porcentajes en relación con el propio elemento de la imagen, no con el viewport. Esto significa que desplazar la página o cambiar el tamaño de la ventana del navegador no afecta las posiciones de los marcadores. Los marcadores permanecen anclados a sus ubicaciones en la imagen independientemente de los cambios en el viewport.

Preparación para el futuro

El enfoque basado en porcentajes hace que las discusiones sobre sus imágenes sean resistentes a cambios en el diseño, la disposición o el ecosistema de dispositivos. A medida que surjan nuevos tamaños de pantalla y dispositivos, las discusiones existentes seguirán mostrándose correctamente sin requerir actualizaciones o migraciones.


Personalización Internal Link


Compatibilidad con modo oscuro

Image Chat incluye soporte integrado para modo oscuro. Cuando estableces hasDarkBackground: true en tu configuración, las ventanas de chat y los elementos de la interfaz de usuario se ajustan automáticamente para funcionar bien en fondos oscuros.

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

El estilo de modo oscuro se aplica a las ventanas de chat, a los cuadrados marcadores y a todos los elementos interactivos. Si tu sitio tiene un interruptor de modo oscuro, puedes reinicializar el widget cuando cambie el modo, o usar el enfoque de clase en el body descrito más abajo.

Modo oscuro dinámico

Si el modo oscuro de tu sitio se controla añadiendo una clase .dark al elemento body, la interfaz de Image Chat respetará esto automáticamente sin necesidad de reinicializar. Los estilos del widget están diseñados para responder a la presencia de esta clase.

/* Tu CSS de modo oscuro */
body.dark {
    background: #1a1a1a;
    color: #ffffff;
}

Estilizado personalizado con CSS

Puedes personalizar la apariencia de los marcadores, las ventanas de chat y otros elementos usando CSS. El widget añade clases específicas a las que puedes dirigirte en tu hoja de estilos.

Los cuadrados y ventanas de chat usan el sistema de estilo de burbujas de comentarios de FastComments, por lo que cualquier personalización que hayas aplicado al widget de comentarios estándar también afectará a Image Chat.

Tamaño de los cuadrados de chat

La opción chatSquarePercentage controla el tamaño de los marcadores clicables. El valor predeterminado es el 5% del ancho de la imagen:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    chatSquarePercentage: 7  // Cuadrados más grandes y más visibles
});

Valores más pequeños crean marcadores más sutiles que se integran en la imagen. Valores más grandes hacen que los marcadores sean más prominentes y más fáciles de pulsar, especialmente en dispositivos móviles o por motivos de accesibilidad.

Comportamiento en móviles

En pantallas de menos de 768px de ancho, Image Chat cambia automáticamente a un diseño optimizado para móviles. Las ventanas de chat aparecen a pantalla completa en lugar de flotar junto a los marcadores, ofreciendo una mejor usabilidad en pantallas pequeñas.

Los marcadores permanecen visibles en sus posiciones responsivas sobre la imagen. Los usuarios pueden tocar cualquier marcador para abrir la interfaz de chat a pantalla completa. Este comportamiento está integrado y no requiere ninguna configuración.

Apariencia de la ventana de chat

Las ventanas de chat tienen 300px de ancho en escritorio con una flecha de 16px apuntando al marcador. Las ventanas se posicionan automáticamente según el espacio disponible en la ventana de visualización, usando clases de posicionamiento como to-right, to-left, to-top y to-bottom.

Puedes añadir CSS personalizado para ajustar colores, fuentes, espaciado u otras propiedades visuales de estas ventanas. Las ventanas de chat usan la misma estructura de componentes que el widget estándar de FastComments, por lo que heredan cualquier personalización global que hayas aplicado.

Inicialización perezosa

Las ventanas de chat se inicializan al pasar el ratón para usuarios de escritorio o inmediatamente cuando se crean. Esto reduce la sobrecarga de carga inicial al solo renderizar la interfaz de chat cuando los usuarios realmente interactúan con un marcador.

La inicialización perezosa ocurre de forma transparente. Los usuarios no notan ningún retraso, pero el navegador no necesita renderizar docenas de ventanas de chat ocultas si tienes muchos marcadores en una imagen.

Localización

Image Chat admite todas las mismas opciones de localización que el widget estándar de FastComments. Establece la opción locale para mostrar el texto de la interfaz en diferentes idiomas:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    locale: 'fr'  // Francés
});

FastComments admite decenas de idiomas. La configuración de locale afecta todo el texto de la interfaz, incluyendo los avisos, botones y texto de marcador de posición.

Opciones de personalización heredadas

Dado que Image Chat extiende el widget de comentarios estándar, hereda todas las opciones de personalización del widget base. Esto incluye clases CSS personalizadas, traducciones personalizadas, personalización de avatares, formato de fechas y mucho más.

Consulta la documentación principal de personalización de FastComments para la lista completa de opciones de personalización disponibles.

Uso de fuentes personalizadas

Si tu sitio usa fuentes personalizadas, la interfaz de Image Chat heredará esas fuentes del CSS de tu página. Las ventanas de chat se renderizan dentro del DOM de tu página y respetan la configuración tipográfica existente.

Para mejores resultados, asegúrate de que tus fuentes personalizadas estén cargadas antes de inicializar Image Chat, o acepta que puede haber un breve parpadeo de texto sin estilo mientras las fuentes se cargan.

Diseño visual de los marcadores

Los marcadores cuadrados tienen un diseño visual sutil que los hace visibles sin abrumar la imagen. Puedes personalizar su apariencia con CSS si deseas un tratamiento visual diferente.

Los marcadores incluyen estados de hover que proporcionan retroalimentación cuando los usuarios mueven el cursor sobre ellos. En dispositivos táctiles, la interacción de toque proporciona retroalimentación inmediata abriendo la ventana de chat.


Sincronización en tiempo real Internal Link

Actualizaciones en tiempo real

Image Chat utiliza conexiones WebSocket para sincronizar todas las conversaciones en tiempo real entre todos los usuarios conectados. Cuando alguien crea un nuevo marcador, añade un comentario o elimina una discusión, todos los demás usuarios que están viendo la misma imagen ven la actualización inmediatamente sin necesidad de refrescar.

Cómo funciona la sincronización por WebSocket

Al inicializar Image Chat, el widget establece una conexión WebSocket con los servidores de FastComments. Esta conexión permanece abierta durante la sesión del usuario y escucha actualizaciones relacionadas con la imagen actual.

El sistema WebSocket utiliza tres tipos de mensajes de difusión para Image Chat. El evento new-image-chat se dispara cuando alguien crea un nuevo marcador en la imagen. El evento image-chat-updated se dispara cuando alguien actualiza una conversación existente. El evento deleted-image-chat se dispara cuando alguien elimina un marcador.

Sistema de ID de difusión

Para evitar efectos de eco en los que los usuarios ven sus propias acciones retransmitidas, cada actualización incluye un broadcastId único. Cuando un usuario crea o actualiza un marcador, su cliente genera un UUID para esa operación. Cuando el WebSocket retransmite la actualización a todos los clientes, el cliente origen ignora la actualización porque coincide con su propio broadcastId.

Esto asegura una interacción fluida en la que los usuarios ven sus cambios inmediatamente en la interfaz sin esperar el viaje de ida y vuelta al servidor, al mismo tiempo que garantiza que todos los demás usuarios reciban la actualización.

Resiliencia de la conexión

Si la conexión WebSocket se cae debido a problemas de red o mantenimiento del servidor, el widget intenta reconectarse automáticamente. Durante el periodo de reconexión, los usuarios aún pueden interactuar con los marcadores existentes, pero no verán las actualizaciones en tiempo real de otros usuarios hasta que la conexión se restablezca.

Una vez reconectado, el widget vuelve a sincronizarse para asegurar que no se hayan perdido actualizaciones. Esto ocurre de forma transparente sin requerir intervención del usuario.

Consideraciones sobre el ancho de banda

Los mensajes WebSocket son ligeros y contienen solo la información esencial necesaria para sincronizar el estado. Crear un nuevo marcador normalmente utiliza menos de 1KB de ancho de banda. El sistema también incluye agrupamiento inteligente para reducir la frecuencia de mensajes durante periodos de alta actividad.

Las métricas de uso en el panel de FastComments rastrean pubSubMessageCount y pubSubBandwidth para que puedas monitorizar la actividad de sincronización en tiempo real en tus sitios.

Sincronización entre pestañas

Si un usuario tiene la misma página abierta en varias pestañas del navegador, las actualizaciones en una pestaña aparecen inmediatamente en las otras pestañas. Esto funciona mediante el mismo mecanismo de sincronización por WebSocket y no requiere configuración adicional.

Los usuarios pueden tener tu sitio abierto en varios dispositivos simultáneamente, y todos ellos permanecerán sincronizados. Un marcador creado en un ordenador de sobremesa aparece al instante en la tableta del usuario si ambos dispositivos están viendo la misma imagen.

Seguridad

Los mensajes WebSocket se transmiten sobre conexiones seguras (WSS) e incluyen validación de tenant para asegurar que los usuarios solo reciben actualizaciones de las conversaciones que están autorizados a ver. El servidor valida todas las operaciones antes de difundirlas para prevenir acceso o manipulación no autorizada.

Comportamiento sin conexión

Cuando los usuarios están completamente sin conexión, aún pueden ver los marcadores existentes pero no pueden crear nuevos ni ver las actualizaciones de otros. El widget detecta el estado sin conexión y muestra un mensaje apropiado.

Si un usuario intenta crear un marcador estando sin conexión y luego vuelve a conectarse, la operación fallará en lugar de ponerse en cola, asegurando la consistencia de los datos. Los usuarios deben reintentar la operación una vez que su conexión se haya restablecido.

Impacto en el rendimiento

La conexión WebSocket tiene un impacto mínimo en el rendimiento. La conexión permanece inactiva cuando no se producen actualizaciones y solo procesa mensajes cuando hay actividad. En una imagen típica con actividad moderada de marcadores, el WebSocket utiliza menos CPU que el renderizado de la propia imagen.

Para páginas con cientos de usuarios simultáneos y alta actividad de creación de marcadores, el sistema escala horizontalmente para mantener el rendimiento sin afectar las conexiones de clientes individuales.

Casos de uso colaborativos

La sincronización en tiempo real hace que Image Chat sea especialmente potente para flujos de trabajo colaborativos. Los equipos de diseño pueden revisar maquetas juntos, con todos viendo la colocación de marcadores en tiempo real. Los equipos de soporte al cliente pueden anotar capturas de pantalla de forma colaborativa para identificar problemas. Los grupos educativos pueden discutir diagramas con todos los participantes viendo los marcadores de los demás a medida que se crean.

La retroalimentación inmediata crea una experiencia colaborativa más atractiva y productiva en comparación con los sistemas de comentarios tradicionales donde los usuarios necesitan refrescar para ver las actualizaciones.


¿Tienes preguntas?

¡Eso es todo sobre FastComments Image Chat! Si tienes alguna pregunta, necesitas ayuda con la implementación o tienes sugerencias de funciones, por favor háznoslo saber a continuación o ponte en contacto con nuestro equipo de soporte.

Consulta la demostración en vivo en nuestra página de demostración para ver Image Chat en acción.