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 для синхронізації всіх розмов у реальному часі між усіма підключеними користувачами. Коли хтось створює новий маркер, додає коментар або видаляє обговорення, всі інші користувачі, які переглядають те саме зображення, бачать оновлення одразу, без перезавантаження.

Як працює синхронізація WebSocket

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

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

Система broadcast ID

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

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

Стійкість з'єднання

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

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

Міркування щодо пропускної здатності

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

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

Синхронізація між вкладками

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

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

Безпека

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

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

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

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

Вплив на продуктивність

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

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

Сценарії спільного використання

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

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

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

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

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