FastComments.com

FastComments Image Chat дозволяє проводити інтерактивні обговорення зображень, дозволяючи користувачам клацати будь-де на зображенні, щоб створювати точки обговорення. Користувачі можуть клацати по конкретних частинах зображень, щоб розпочати розмови про ті ділянки, створюючи візуальні маркери, які показують, де розташовані обговорення.

Ця функція ідеально підходить для відгуків щодо дизайну, оглядів продуктів, навчальних матеріалів із діаграмами, фотогалерей з коментарями та будь-якого сценарію, де ви хочете мати контекстні обговорення, прив'язані до конкретних місць на зображенні.

Адаптивний дизайн Internal Link

Позиціонування на основі відсотків

Image Chat використовує координати, що задаються у відсотках, замість піксельних координат для розміщення маркерів чату на зображеннях. Коли користувач клацає по зображенню, віджет перетворює піксельні координати клацання в відсотки від ширини та висоти зображення. Такий підхід гарантує, що маркери залишаються у правильному місці незалежно від способу відображення зображення.

Наприклад, якщо користувач клацнув на відстані 250 пікселів від лівого краю зображення шириною 1000px, віджет зберігає це як 25% від лівого краю. Коли інший користувач переглядає те ж зображення шириною 500px на мобільному пристрої, маркер зʼявляється на відстані 125 пікселів від лівого краю, що також становить 25% ширини.

Переваги для адаптивних макетів

Ця система відсотків дозволяє Image Chat працювати бездоганно на всіх розмірах і орієнтаціях пристроїв. Ваші зображення можуть відображатися в різних розмірах залежно від ширини екрану, CSS-правил або обмежень контейнера, але маркери завжди правильно вирівнюються з потрібними місцями.

Користувачі на настільних комп’ютерах з великими моніторами бачать маркери у тих же відносних позиціях, що й користувачі на смартфонах з маленькими екранами. Маркери масштабуються пропорційно самому зображенню.

Масштабування зображення та співвідношення сторін

Поки ваше зображення зберігає своє співвідношення сторін під час масштабування (що за замовчуванням робить браузер), маркери на основі відсотків залишатимуться ідеально вирівняними. Віджет припускає, що зображення масштабуються пропорційно, і обчислює позиції на основі цього припущення.

Якщо ви застосуєте CSS, яке спотворює співвідношення сторін зображення (наприклад, використовуючи object-fit: cover з конкретними розмірами), позиції маркерів можуть бути неправильними. Для найкращих результатів дозволяйте зображенням масштабуватися природно або використовуйте object-fit: contain, щоб зберегти співвідношення сторін.

Розмір квадрата чату

Візуальний розмір маркерів чату також задається у відсотках. Опція конфігурації chatSquarePercentage за замовчуванням становить 5%, тобто кожен квадрат займає 5% від ширини зображення. Це забезпечує послідовну візуальну вагу на зображеннях різних розмірів.

На зображенні шириною 1000px зі стандартним налаштуванням 5% маркери мають розмір 50px у квадраті. На зображенні шириною 500px ті самі маркери матимуть розмір 25px у квадраті. Вони залишаються пропорційними розміру зображення.

Поведінка на мобільних пристроях

На екранах шириною менше 768px Image Chat переходить у оптимізований для мобільних пристроїв макет. Вікна чату відкриваються на весь екран замість того, щоб плавати поруч із маркером. Це покращує зручність використання на маленьких екранах, де плаваючі вікна могли б надто закривати зображення.

Самі маркери залишаються видимими та клікабельними у своїх позиціях, заданих у відсотках. Користувачі все ще можуть бачити, де розташовані всі обговорення, і торкатися маркерів, щоб відкрити інтерфейс чату на весь екран.

Динамічне завантаження зображень

Система на основі відсотків працює коректно навіть коли зображення завантажуються асинхронно або змінюють розмір після завантаження сторінки. Віджет відслідковує елемент зображення і перераховує позиції маркерів щоразу, коли змінюються розміри зображення.

Якщо ви використовуєте ліниве завантаження зображень або реалізуєте адаптивні зображення з різними розмірами на різних брейкпойнтах, маркери автоматично підлаштовуються при зміні розміру зображення.

Узгодженість між пристроями

Оскільки координати зберігаються в базі даних як відсотки, обговорення, створене на настільному комп’ютері, зʼявляється в точно тому самому відносному місці при перегляді на планшеті або телефоні. Користувачі можуть співпрацювати з різних пристроїв без проблем з позиціюванням.

Це працює в обох напрямках. Обговорення, створене шляхом торкання певного місця на мобільному пристрої, відображається в тій самій відносній позиції при перегляді на великому настільному моніторі.

Урахування вікна перегляду

Віджет обчислює відсотки відносно самого елемента зображення, а не від вікна перегляду. Це означає, що прокручування сторінки або зміна розміру вікна браузера не впливає на позиції маркерів. Маркери залишаються прив’язаними до своїх місць на зображенні незалежно від змін вікна перегляду.

Захист вмісту на майбутнє

Підхід на основі відсотків робить ваші дискусії на зображеннях стійкими до змін у макеті, дизайні чи екосистемі пристроїв. У міру появи нових розмірів екранів і пристроїв існуючі обговорення й надалі відображатимуться правильно без необхідності оновлень чи міграцій.

Налаштування Internal Link

Підтримка темного режиму

Image Chat має вбудовану підтримку темного режиму. Коли ви встановлюєте hasDarkBackground: true у вашій конфігурації, вікна чату та елементи інтерфейсу автоматично підлаштовуються для коректного відображення на темному фоні.

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

Стилі темного режиму застосовуються до вікон чату, маркерних квадратиків та всіх інтерактивних елементів. Якщо на вашому сайті є перемикач темного режиму, ви можете перевініалізувати віджет при зміні режиму або використовувати підхід з класом body, описаний нижче.

Динамічний темний режим

Якщо темний режим вашого сайту керується шляхом додавання класу .dark до елементу body, UI Image Chat автоматично врахує це без потреби у перевініалізації. Стилі віджета розроблені так, щоб реагувати на наявність цього класу.

/* Ваш CSS для темного режиму */
body.dark {
    background: #1a1a1a;
    color: #ffffff;
}

Користувацьке стилювання за допомогою CSS

Ви можете налаштувати зовнішній вигляд маркерів, вікон чату та інших елементів за допомогою CSS. Віджет додає певні класи, які можна націлювати у вашому стилі.

Квадрати чату та вікна використовують систему стилізації бульбашок коментарів FastComments, тому будь-які налаштування, які ви застосували до стандартного віджету коментування, також впливатимуть на Image Chat.

Розмір маркерів (Chat Square Sizing)

Опція chatSquarePercentage контролює розмір клікабельних маркерів. За замовчуванням це 5% ширини зображення:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    chatSquarePercentage: 7  // Більші, більш помітні квадрати
});

Менші значення створюють більш витончені маркери, які зливаються з зображенням. Більші значення роблять маркери більш помітними та зручними для натискання, особливо на мобільних пристроях або з огляду на доступність.

Поведінка на мобільних пристроях

На екранах шириною менше 768px Image Chat автоматично переходить у макет, оптимізований для мобільних пристроїв. Вікна чату відкриваються на весь екран замість того, щоб плавати поруч з маркерами, що забезпечує кращу зручність роботи на маленьких екранах.

Маркерні позиції залишаються видимими на відповідних позиціях на зображенні. Користувачі можуть тапнути будь-який маркер, щоб відкрити інтерфейс чату на весь екран. Ця поведінка вбудована і не потребує додаткової конфігурації.

Зовнішній вигляд вікна чату

Вікна чату мають ширину 300px на десктопі з 16px стрілкою, що вказує на маркер. Вікна позиціонуються автоматично залежно від доступного простору у вікні перегляду, використовуючи класи позиціонування як to-right, to-left, to-top та to-bottom.

Ви можете додати власний CSS, щоб налаштувати кольори, шрифти, відступи або інші візуальні властивості цих вікон. Вікна чату використовують ту ж структуру компонентів, що й стандартний віджет FastComments, тому вони успадковують будь-які глобальні налаштування, які ви застосували.

Лінива ініціалізація

Вікна чату ініціалізуються при hover для десктопних користувачів або відразу при створенні. Це зменшує початкове навантаження, рендерячи інтерфейс чату лише тоді, коли користувачі фактично взаємодіють з маркером.

Лінива ініціалізація відбувається прозоро. Користувачі не помічають затримки, але браузеру не потрібно рендерити десятки прихованих вікон чату, якщо на зображенні багато маркерів.

Локалізація

Image Chat підтримує всі ті ж опції локалізації, що й стандартний віджет FastComments. Встановіть опцію locale, щоб відобразити текст інтерфейсу різними мовами:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    locale: 'fr'  // Французька
});

FastComments підтримує десятки мов. Налаштування locale впливає на весь текст інтерфейсу користувача, включаючи підказки, кнопки та текст заповнювачів.

Успадковані опції налаштування

Оскільки Image Chat розширює стандартний віджет коментарів, він успадковує всі опції налаштування з базового віджета. Це включає користувацькі CSS-класи, власні переклади, налаштування аватарів, форматування дати та багато іншого.

Дивіться основну документацію FastComments щодо налаштувань для повного переліку доступних опцій.

Робота з кастомними шрифтами

Якщо на вашому сайті використовуються кастомні шрифти, UI Image Chat успадковує ці шрифти з CSS вашої сторінки. Вікна чату відображаються у DOM вашої сторінки і враховують існуючі налаштування типографіки.

Для найкращого результату переконайтесь, що ваші кастомні шрифти завантажені до ініціалізації Image Chat, або погодьтесь на невелике мерехтіння нестилізованого тексту під час завантаження шрифтів.

Візуальний дизайн маркерів

Квадратні маркери мають витончене візуальне оформлення, яке робить їх помітними, не перевантажуючи зображення. Ви можете налаштувати їхній вигляд за допомогою CSS, якщо бажаєте іншу візуальну подачу.

Маркері включають hover-стани, які дають зворотний зв'язок, коли користувачі наводять на них мишу. На сенсорних пристроях взаємодія через тап дає миттєвий відгук шляхом відкриття вікна чату.

Синхронізація в реальному часі Internal Link

Оновлення в режимі реального часу

Image Chat використовує WebSocket-з’єднання для синхронізації всіх розмов у режимі реального часу між усіма підключеними користувачами. Коли хтось створює нову мітку, додає коментар або видаляє обговорення, усі інші користувачі, які переглядають те саме зображення, бачать оновлення миттєво без оновлення сторінки.

How WebSocket Sync Works

Коли ви ініціалізуєте Image Chat, віджет встановлює WebSocket-з’єднання з серверами FastComments. Це з’єднання залишається відкритим протягом сеансу користувача і прослуховує оновлення, що стосуються поточного зображення.

Система WebSocket використовує три типи широкомовних повідомлень для Image Chat. Подія new-image-chat спрацьовує, коли хтось створює нову мітку на зображенні. Подія image-chat-updated спрацьовує, коли хтось оновлює існуючу розмову. Подія deleted-image-chat спрацьовує, коли хтось видаляє мітку.

Broadcast ID System

Щоб запобігти ефекту ехо, коли користувачі бачать свої власні дії, що транслюються назад до них, кожне оновлення включає унікальний broadcastId. Коли користувач створює або оновлює мітку, його клієнт генерує UUID для цієї операції. Коли WebSocket транслює оновлення назад усім клієнтам, початковий клієнт ігнорує це оновлення, оскільки воно відповідає його власному broadcastId.

Це забезпечує плавну взаємодію, коли користувачі бачать свої зміни негайно в інтерфейсі користувача без очікування кругового проходження через сервер, одночасно забезпечуючи, що всі інші користувачі отримують оновлення.

Connection Resilience

Якщо WebSocket-з’єднання припиняється через мережеві проблеми або технічне обслуговування сервера, віджет автоматично намагається повторно підключитися. Під час періоду повторного підключення користувачі все ще можуть взаємодіяти з існуючими мітками, але вони не бачитимуть оновлень від інших користувачів у режимі реального часу, поки з’єднання не буде відновлено.

Після відновлення з’єднання віджет повторно синхронізується, щоб переконатися, що ні одне оновлення не було пропущено. Це відбувається прозоро без необхідності втручання користувача.

Bandwidth Considerations

Повідомлення WebSocket є легкими і містять лише необхідну інформацію для синхронізації стану. Створення нової мітки зазвичай використовує менше ніж 1KB пропускної здатності. Система також включає інтелектуальне пакетування, щоб зменшити частоту повідомлень під час періодів високої активності.

Ваші метрики використання в панелі керування FastComments відстежують pubSubMessageCount і pubSubBandwidth, щоб ви могли контролювати активність синхронізації в реальному часі на ваших сайтах.

Cross-Tab Synchronization

Якщо користувач має ту ж сторінку відкритою в кількох вкладках браузера, оновлення в одній вкладці відображаються негайно в інших вкладках. Це працює через той самий механізм синхронізації WebSocket і не вимагає додаткової конфігурації.

Користувачі можуть мати ваш сайт відкритим на кількох пристроях одночасно, і всі вони залишатимуться синхронізованими. Мітка, створена на настільному комп’ютері, з’явиться миттєво на планшеті користувача, якщо обидва пристрої переглядають те саме зображення.

Security

Повідомлення WebSocket передаються через захищені з’єднання (WSS) і включають tenant validation, щоб гарантувати, що користувачі отримують лише ті оновлення для розмов, на які вони мають дозвіл. Сервер перевіряє всі операції перед їх широкомовленням, щоб запобігти несанкціонованому доступу або маніпуляціям.

Offline Behavior

Коли користувачі повністю офлайн, вони все ще можуть переглядати існуючі мітки, але не можуть створювати нові або бачити оновлення від інших. Віджет виявляє стан офлайн і відображає відповідні повідомлення.

Якщо користувач намагається створити мітку в офлайн-режимі, а потім повертається в мережу, операція зазнає невдачі замість того, щоб поставитися в чергу, що забезпечує узгодженість даних. Користувачам слід повторити операцію після відновлення з’єднання.

Performance Impact

WebSocket-з’єднання має мінімальний вплив на продуктивність. З’єднання залишається в режимі простою, коли оновлень не відбувається, і обробляє повідомлення лише під час активності. На типовому зображенні з помірною активністю міток WebSocket використовує менше CPU, ніж рендеринг самого зображення.

Для сторінок з сотнями одночасних користувачів і високою активністю створення міток система масштабується по горизонталі, щоб підтримувати продуктивність без впливу на індивідуальні клієнтські з’єднання.

Collaborative Use Cases

Синхронізація в режимі реального часу робить Image Chat особливо потужним для спільної роботи. Команди дизайнерів можуть разом переглядати макети, при цьому всі бачать розміщення міток у режимі реального часу. Команди підтримки клієнтів можуть спільно коментувати скриншоти, щоб виявити проблеми. Освітні групи можуть обговорювати діаграми, причому всі учасники бачать мітки один одного під час їх створення.

Негайний зворотний зв’язок створює більш залучений і продуктивний досвід співпраці порівняно з традиційними системами коментарів, де користувачам потрібно оновлювати сторінку, щоб побачити оновлення.

Маєте запитання?

На цьому все щодо FastComments Image Chat! Якщо у вас є запитання, потрібна допомога з реалізацією або у вас є пропозиції щодо функцій, будь ласка, повідомте нам нижче або зверніться до нашої служби підтримки.

Перегляньте живу демонстрацію на нашій сторінці демо, щоб побачити Image Chat в дії.