
Język 🇵🇱 Polski
Pierwsze kroki
Konfiguracja
Personalizacja
Zaawansowane
Czat z obrazami
FastComments Image Chat umożliwia interaktywne dyskusje na obrazach, pozwalając użytkownikom klikać w dowolne miejsce na obrazie, aby tworzyć punkty dyskusji. Użytkownicy mogą klikać w konkretne części obrazów, aby rozpocząć rozmowy o tych obszarach, tworząc wizualne znaczniki, które pokazują, gdzie toczą się dyskusje.
Ta funkcja jest idealna do opinii dotyczących projektów, recenzji produktów, materiałów edukacyjnych z diagramami, galerii zdjęć z komentarzami oraz wszelkich scenariuszy, w których chcesz prowadzić kontekstowe dyskusje powiązane z konkretnymi miejscami na obrazie.
Pierwsze kroki 
Przypadki użycia
Image Chat świetnie sprawdza się przy opiniach na temat projektów, gdzie zespoły muszą omawiać konkretne elementy w makietach lub zrzutach ekranu. Strony z recenzjami produktów mogą pozwolić klientom omawiać konkretne funkcje widoczne na zdjęciach produktów. Platformy edukacyjne mogą go używać do omawiania diagramów, map lub obrazów naukowych. Galerie zdjęć mogą stać się interaktywne dzięki komentarzom przypisanym do konkretnych lokalizacji. Strony nieruchomości mogą pozwolić oglądającym omawiać konkretne cechy widoczne na zdjęciach nieruchomości.
Szybki start
Rozpoczęcie pracy z Image Chat jest proste. Potrzebujesz skryptu FastComments Image Chat, elementu obrazu lub kontenera z obrazem oraz obiektu konfiguracyjnego z Twoim Tenant ID.
Instalacja
Dodaj skrypt Image Chat do swojej strony:

Podstawowa implementacja
Oto minimalny przykład:
Run 
Zamień 'demo' na swój rzeczywisty FastComments Tenant ID, jeśli jeszcze tego nie zrobiłeś — znajdziesz go w swoim panelu FastComments.
Jak to działa
Po inicjalizacji użytkownicy mogą klikać w dowolne miejsce na obrazie. Po kliknięciu w tej lokalizacji pojawia się wizualny znacznik w kształcie kwadratu i otwiera się okno czatu. Inni użytkownicy mogą widzieć wszystkie znaczniki i klikać je, aby wyświetlić lub dołączyć do tych dyskusji. Wszystkie dyskusje synchronizują się w czasie rzeczywistym u wszystkich odwiedzających.
Widżet używa pozycjonowania opartego na procentach, więc znaczniki pozostają we właściwym miejscu nawet gdy obraz zmienia rozmiar lub jest oglądany na ekranach o różnych rozmiarach.
Demo na żywo
Możesz zobaczyć Image Chat w akcji na naszej stronie demo na żywo.
Następne kroki
Teraz, gdy masz działające podstawy, możesz dostosować wygląd i zachowanie w przewodniku Opcje konfiguracji. Zapoznaj się z przewodnikiem Projektowanie responsywne, aby zrozumieć, jak działa pozycjonowanie oparte na procentach. Dowiedz się o stylowaniu i obsłudze trybu ciemnego w przewodniku Dostosowywanie. W przypadku zaawansowanych integracji zapoznaj się z dokumentacją API.
Biblioteki frontendowe
Wszystkie biblioteki frontendowe FastComments (react, vue, angular itd.) obsługują Image Chat.
Przykłady 
Podstawowy przykład
Najprostszy sposób użycia Image Chat to skierowanie na pojedynczy element obrazu. Ten przykład pokazuje, jak włączyć interaktywne dyskusje na obrazie:
Run 
Przykład z elementem kontenera
Możesz też przekazać element kontenera, który zawiera wewnątrz obraz:
Run 
Przykład z niestandardowym identyfikatorem URL
Domyślnie Image Chat używa adresu URL strony połączonego ze źródłem obrazu i współrzędnymi do identyfikacji konwersacji. Możesz podać niestandardowy urlId:
Run 
Jest to przydatne, jeśli struktura adresów URL ulegnie zmianie, a chcesz zachować te same konwersacje, lub jeśli chcesz udostępniać te same punkty dyskusji na wielu stronach.
Przykład z trybem ciemnym
Jeżeli Twoja strona ma ciemne tło i widżet nie wykrywa go automatycznie tak jak powinien, możemy ręcznie włączyć obsługę trybu ciemnego:
Run 
Przykład z niestandardowym rozmiarem kwadratu czatu
Możesz dostosować rozmiar klikalnych kwadratów wyświetlanych na obrazie. Rozmiar określany jest jako procent szerokości obrazu:
Run 
Przykład z funkcją zwrotną aktualizacji liczby komentarzy
Śledź, kiedy komentarze są dodawane lub aktualizowane, używając funkcji zwrotnej commentCountUpdated:

Przykład z wieloma obrazami
Możesz zainicjalizować Image Chat na wielu obrazach. Każdy obraz będzie miał swoje własne, niezależne punkty dyskusji:
Run 
Opcje konfiguracji 
Przegląd
FastComments Image Chat rozszerza standardowy widget komentarzy FastComments, więc dziedziczy wszystkie opcje konfiguracji z bazowego widgetu, dodając jednocześnie kilka opcji specyficznych dla adnotacji obrazów.
Wymagana konfiguracja
tenantId
Wymagany jest Twój FastComments Tenant ID. Możesz go znaleźć w swoim panelu FastComments.
FastCommentsImageChat(imageElement, {
tenantId: 'demo'
});
Opcje specyficzne dla Image Chat
urlId
Domyślnie Image Chat generuje unikalny identyfikator dla każdej rozmowy na podstawie adresu URL strony, źródła obrazu oraz współrzędnych X/Y. Możesz to nadpisać własnym urlId.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
urlId: 'my-custom-image-id'
});
Jest to przydatne, gdy struktura Twoich adresów URL może się zmienić, ale chcesz zachować te same rozmowy, lub gdy chcesz udostępniać adnotacje na wielu stronach.
chatSquarePercentage
Kontroluje rozmiar klikalnych znaczników czatu jako procent szerokości obrazu. Wartość domyślna to 5%, co oznacza, że każdy znacznik ma 5% szerokości obrazu.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
chatSquarePercentage: 8 // Większe, bardziej widoczne znaczniki
});
Mniejsze wartości tworzą mniej nachalne znaczniki, które lepiej sprawdzają się na szczegółowych obrazach. Większe wartości ułatwiają widzenie i klikanie znaczników na zatłoczonych obrazach lub dla użytkowników urządzeń mobilnych.
hasDarkBackground
Włącz stylizację trybu ciemnego, gdy Twoja strona ma ciemne tło.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
hasDarkBackground: true
});
commentCountUpdated
Funkcja zwrotna wywoływana przy każdej zmianie liczby komentarzy. Jest to przydatne do aktualizacji elementów interfejsu, takich jak plakietki czy tytuły stron.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
commentCountUpdated: function(count) {
console.log('Total comments:', count);
document.getElementById('badge').textContent = count;
}
});
Odziedziczone opcje konfiguracji
Ponieważ Image Chat rozszerza standardowy widget komentarzy, możesz użyć dowolnej opcji konfiguracji z bazowego widgetu FastComments. Oto niektóre z najczęściej używanych opcji:
locale
Ustawia język interfejsu widgetu. FastComments obsługuje dziesiątki języków.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
locale: 'es' // Hiszpański
});
readonly
Ustawia wszystkie rozmowy jako tylko do odczytu. Użytkownicy mogą przeglądać istniejące znaczniki i dyskusje, ale nie mogą tworzyć nowych ani odpowiadać.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
readonly: true
});
sso i simpleSSO
Integracja z Twoim systemem uwierzytelniania przy użyciu Single Sign-On.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
sso: {
// Konfiguracja SSO
}
});
Zobacz dokumentację SSO, aby uzyskać pełne informacje na temat opcji uwierzytelniania.
maxReplyDepth
Kontroluje, na ile poziomów w głąb mogą schodzić odpowiedzi. Domyślnie Image Chat ustawia tę wartość na 0, co oznacza, że wszystkie komentarze są płaskie (bez zagnieżdżonych odpowiedzi). Możesz to zmienić, jeśli chcesz mieć wątkowe rozmowy.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
maxReplyDepth: 3 // Pozwól na 3 poziomy zagnieżdżenia
});
Konfiguracja wewnętrzna
Te opcje są ustawiane automatycznie przez Image Chat i nie powinny być nadpisywane:
productId jest automatycznie ustawiane na 2 dla Image Chat. Rozszerzenie floating-chat jest automatycznie ładowane, aby zapewnić funkcjonalność okna czatu. Widget automatycznie wykrywa urządzenia mobilne (ekrany o szerokości poniżej 768px) i odpowiednio dostosowuje interfejs, używając pełnoekranowych okien czatu.
Elastyczność elementu docelowego
Pierwszy parametr FastCommentsImageChat może być bezpośrednio elementem <img> lub elementem kontenera zawierającym obraz:
// Bezpośrednio element obrazu
FastCommentsImageChat(document.getElementById('my-image'), config);
// Kontener z obrazem w środku
FastCommentsImageChat(document.querySelector('.image-wrapper'), config);
Widget automatycznie znajdzie obraz, jeśli przekażesz element kontenera.
Kompletny przykład
Oto przykład pokazujący kilka opcji konfiguracji razem:
FastCommentsImageChat(document.getElementById('product-image'), {
tenantId: 'demo',
urlId: 'product-v2-main',
chatSquarePercentage: 6,
hasDarkBackground: false,
locale: 'en',
commentCountUpdated: function(count) {
document.title = count > 0 ? `(${count}) Product Photo` : 'Product Photo';
},
sso: {
// Twoja konfiguracja SSO
},
maxReplyDepth: 1
});
Aby uzyskać pełną listę wszystkich dostępnych opcji konfiguracji odziedziczonych z bazowego widgetu, zobacz główną dokumentację konfiguracji FastComments.
Responsywność 
Pozycjonowanie oparte na procentach
Image Chat używa współrzędnych procentowych zamiast współrzędnych pikselowych do pozycjonowania znaczników czatu na obrazach. Gdy użytkownik kliknie obraz, widżet konwertuje współrzędne pikselowe kliknięcia na procenty szerokości i wysokości obrazu. To podejście zapewnia, że znaczniki pozostają we właściwym miejscu niezależnie od tego, jak obraz jest wyświetlany.
Na przykład, jeśli użytkownik kliknie 250 pikseli od lewej krawędzi obrazu o szerokości 1000px, widżet zapisuje to jako 25% od lewej. Gdy inny użytkownik wyświetli ten sam obraz o szerokości 500px na urządzeniu mobilnym, znacznik pojawi się 125 pikseli od lewej, co nadal stanowi 25% szerokości.
Korzyści dla responsywnych układów
Ten system procentowy sprawia, że Image Chat działa płynnie na wszystkich rozmiarach i orientacjach urządzeń. Twoje obrazy mogą być wyświetlane w różnych rozmiarach w zależności od szerokości ekranu, reguł CSS lub ograniczeń kontenera, ale znaczniki zawsze będą poprawnie wyrównane z zamierzonymi lokalizacjami.
Użytkownicy na komputerach stacjonarnych z dużymi monitorami widzą znaczniki w tych samych pozycjach względnych co użytkownicy smartfonów z małymi ekranami. Znaczniki skalują się proporcjonalnie do samego obrazu.
Skalowanie obrazu i proporcje
Dopóki Twój obraz zachowuje swoje proporcje podczas skalowania (co jest domyślnym zachowaniem przeglądarki), znaczniki procentowe pozostaną idealnie wyrównane. Widżet zakłada, że obrazy skalują się proporcjonalnie i oblicza pozycje na podstawie tego założenia.
Jeśli zastosujesz CSS, który zniekształca proporcje obrazu (np. używając object-fit: cover z określonymi wymiarami), pozycje znaczników mogą nie być poprawnie wyrównane. Dla najlepszych rezultatów pozwól obrazom skalować się naturalnie lub użyj object-fit: contain, aby zachować proporcje.
Rozmiar kwadratów czatu
Wizualny rozmiar znaczników czatu również jest oparty na procentach. Opcja konfiguracji chatSquarePercentage ma domyślnie wartość 5%, co oznacza, że każdy kwadrat stanowi 5% szerokości obrazu. Zapewnia to spójną wagę wizualną w różnych rozmiarach obrazów.
Na obrazie o szerokości 1000px z domyślnym ustawieniem 5% znaczniki mają 50px kwadratu. Na obrazie o szerokości 500px te same znaczniki mają 25px kwadratu. Pozostają proporcjonalne do rozmiaru obrazu.
Zachowanie na urządzeniach mobilnych
Na ekranach o szerokości poniżej 768px Image Chat przełącza się na układ zoptymalizowany pod urządzenia mobilne. Okna czatu otwierają się na pełnym ekranie zamiast unosić się obok znacznika. Zapewnia to lepszą użyteczność na małych ekranach, gdzie pływające okna zasłaniałyby zbyt dużą część obrazu.
Same znaczniki pozostają widoczne i klikalne na swoich pozycjach procentowych. Użytkownicy nadal mogą zobaczyć, gdzie znajdują się wszystkie dyskusje, i dotknąć znaczników, aby otworzyć pełnoekranowy interfejs czatu.
Dynamiczne ładowanie obrazów
System procentowy działa poprawnie nawet wtedy, gdy obrazy ładują się asynchronicznie lub zmieniają rozmiar po załadowaniu strony. Widżet monitoruje element obrazu i przelicza pozycje znaczników za każdym razem, gdy wymiary obrazu się zmienią.
Jeśli stosujesz leniwe ładowanie obrazów lub implementujesz responsywne obrazy o różnych rozmiarach w różnych breakpointach, znaczniki automatycznie dostosują się po zmianie rozmiaru obrazu.
Spójność między urządzeniami
Ponieważ współrzędne są przechowywane jako procenty w bazie danych, dyskusja utworzona na komputerze stacjonarnym pojawia się w dokładnie tej samej pozycji względnej podczas wyświetlania na tablecie lub telefonie. Użytkownicy mogą współpracować między urządzeniami bez żadnych niespójności w pozycjonowaniu.
Działa to dwukierunkowo. Dyskusja utworzona przez dotknięcie konkretnego miejsca na urządzeniu mobilnym pojawia się w tej samej pozycji względnej podczas wyświetlania na dużym monitorze komputera stacjonarnego.
Uwagi dotyczące viewportu
Widżet oblicza procenty względem samego elementu obrazu, a nie viewportu. Oznacza to, że przewijanie strony lub zmiana rozmiaru okna przeglądarki nie wpływa na pozycje znaczników. Znaczniki pozostają zakotwiczone w swoich lokalizacjach na obrazie niezależnie od zmian viewportu.
Przyszłościowa zawartość
Podejście oparte na procentach sprawia, że Twoje dyskusje na obrazach są odporne na zmiany układu, designu lub ekosystemu urządzeń. Gdy pojawią się nowe rozmiary ekranów i urządzenia, istniejące dyskusje będą nadal wyświetlać się poprawnie bez konieczności jakichkolwiek aktualizacji lub migracji.
Personalizacja 
Obsługa trybu ciemnego
Image Chat zawiera wbudowaną obsługę trybu ciemnego. Gdy ustawisz hasDarkBackground: true w swojej konfiguracji, okna czatu i elementy interfejsu automatycznie dostosują się do ciemnych tł.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
hasDarkBackground: true
});
Stylizacja trybu ciemnego dotyczy okien czatu, kwadratowych znaczników i wszystkich elementów interaktywnych. Jeśli Twoja witryna ma przełącznik trybu ciemnego, możesz ponownie zainicjować widżet po zmianie trybu lub użyć podejścia z klasą body opisanego poniżej.
Dynamiczny tryb ciemny
Jeśli tryb ciemny Twojej witryny jest kontrolowany przez dodanie klasy .dark do elementu body, interfejs Image Chat automatycznie to uwzględni bez konieczności ponownej inicjalizacji. Style widżetu zostały zaprojektowane tak, aby reagować na obecność tej klasy.
/* Twoje CSS trybu ciemnego */
body.dark {
background: #1a1a1a;
color: #ffffff;
}
Niestandardowa stylizacja za pomocą CSS
Możesz dostosować wygląd znaczników, okien czatu i innych elementów za pomocą CSS. Widżet dodaje określone klasy, które możesz wykorzystać w swoim arkuszu stylów.
Kwadraty i okna czatu korzystają z systemu stylizacji dymków komentarzy FastComments, więc wszelkie dostosowania zastosowane do standardowego widżetu komentarzy będą miały również wpływ na Image Chat.
Rozmiar kwadratów czatu
Opcja chatSquarePercentage kontroluje rozmiar klikalnych znaczników. Wartość domyślna to 5% szerokości obrazu:
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
chatSquarePercentage: 7 // Większe, bardziej widoczne kwadraty
});
Mniejsze wartości tworzą bardziej subtelne znaczniki, które wtapiają się w obraz. Większe wartości sprawiają, że znaczniki są bardziej widoczne i łatwiejsze do kliknięcia, szczególnie na urządzeniach mobilnych lub ze względów dostępności.
Zachowanie na urządzeniach mobilnych
Na ekranach o szerokości poniżej 768px Image Chat automatycznie przełącza się na układ zoptymalizowany pod kątem urządzeń mobilnych. Okna czatu pojawiają się na pełnym ekranie zamiast unosić się obok znaczników, co zapewnia lepszą użyteczność na małych ekranach.
Znaczniki pozostają widoczne w swoich responsywnych pozycjach na obrazie. Użytkownicy mogą dotknąć dowolnego znacznika, aby otworzyć pełnoekranowy interfejs czatu. To zachowanie jest wbudowane i nie wymaga żadnej konfiguracji.
Wygląd okna czatu
Okna czatu mają 300px szerokości na komputerach stacjonarnych ze strzałką 16px wskazującą znacznik. Okna pozycjonują się automatycznie w zależności od dostępnej przestrzeni w oknie widoku, używając klas pozycjonowania takich jak to-right, to-left, to-top i to-bottom.
Możesz dodać niestandardowy CSS, aby dostosować kolory, czcionki, odstępy lub inne właściwości wizualne tych okien. Okna czatu używają tej samej struktury komponentów co standardowy widżet FastComments, więc dziedziczą wszelkie globalne dostosowania, które zastosowałeś.
Leniwa inicjalizacja
Okna czatu inicjalizują się po najechaniu kursorem dla użytkowników komputerów stacjonarnych lub natychmiast po utworzeniu. Zmniejsza to początkowe obciążenie ładowania, renderując interfejs czatu tylko wtedy, gdy użytkownicy faktycznie wchodzą w interakcję ze znacznikiem.
Leniwa inicjalizacja odbywa się w sposób niewidoczny. Użytkownicy nie zauważają żadnego opóźnienia, ale przeglądarka nie musi renderować dziesiątek ukrytych okien czatu, jeśli na obrazie znajduje się wiele znaczników.
Lokalizacja
Image Chat obsługuje te same opcje lokalizacji co standardowy widżet FastComments. Ustaw opcję locale, aby wyświetlać tekst interfejsu w różnych językach:
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
locale: 'fr' // Francuski
});
FastComments obsługuje dziesiątki języków. Ustawienie locale wpływa na cały tekst interfejsu, w tym podpowiedzi, przyciski i tekst zastępczy.
Odziedziczone opcje dostosowywania
Ponieważ Image Chat rozszerza standardowy widżet komentarzy, dziedziczy wszystkie opcje dostosowywania z bazowego widżetu. Obejmuje to niestandardowe klasy CSS, niestandardowe tłumaczenia, dostosowywanie awatarów, formatowanie dat i wiele więcej.
Zobacz główną dokumentację dostosowywania FastComments, aby zapoznać się z pełną listą dostępnych opcji dostosowywania.
Praca z niestandardowymi czcionkami
Jeśli Twoja witryna używa niestandardowych czcionek, interfejs Image Chat odziedziczy te czcionki z CSS Twojej strony. Okna czatu są renderowane wewnątrz DOM Twojej strony i respektują istniejące ustawienia typografii.
Aby uzyskać najlepsze rezultaty, upewnij się, że niestandardowe czcionki są załadowane przed zainicjowaniem Image Chat, albo zaakceptuj, że może wystąpić krótki błysk tekstu bez stylizacji podczas ładowania czcionek.
Projekt wizualny znaczników
Kwadratowe znaczniki mają subtelny projekt wizualny, który sprawia, że są zauważalne, nie przytłaczając obrazu. Możesz dostosować ich wygląd za pomocą CSS, jeśli chcesz uzyskać inny efekt wizualny.
Znaczniki zawierają stany hover, które zapewniają informację zwrotną, gdy użytkownicy przesuwają nad nimi kursor. Na urządzeniach dotykowych interakcja dotknięcia zapewnia natychmiastową informację zwrotną poprzez otwarcie okna czatu.
Synchronizacja na żywo 
Aktualizacje w czasie rzeczywistym
Image Chat używa połączeń WebSocket do synchronizacji wszystkich konwersacji w czasie rzeczywistym między wszystkimi podłączonymi użytkownikami. Gdy ktoś tworzy nowy znacznik, dodaje komentarz lub usuwa dyskusję, wszyscy inni użytkownicy oglądający ten sam obraz widzą aktualizację natychmiast, bez odświeżania.
Jak działa synchronizacja przez WebSocket
Gdy inicjujesz Image Chat, widget nawiązuje połączenie WebSocket z serwerami FastComments. Połączenie to pozostaje otwarte przez cały czas trwania sesji użytkownika i nasłuchuje aktualizacji związanych z bieżącym obrazem.
System WebSocket używa trzech typów komunikatów rozgłoszeniowych dla Image Chat. Zdarzenie new-image-chat wywoływane jest, gdy ktoś tworzy nowy znacznik na obrazie. Zdarzenie image-chat-updated wywoływane jest, gdy ktoś aktualizuje istniejącą konwersację. Zdarzenie deleted-image-chat wywoływane jest, gdy ktoś usuwa znacznik.
System identyfikatorów broadcast
Aby zapobiec efektom echa, w których użytkownicy widzą własne działania rozgłaszane z powrotem do nich, każda aktualizacja zawiera unikalny broadcastId. Gdy użytkownik tworzy lub aktualizuje znacznik, jego klient generuje UUID dla tej operacji. Gdy WebSocket rozgłasza aktualizację z powrotem do wszystkich klientów, klient źródłowy ignoruje tę aktualizację, ponieważ pasuje ona do jego własnego broadcastId.
Zapewnia to płynną interakcję, w której użytkownicy widzą swoje zmiany natychmiast w interfejsie użytkownika bez oczekiwania na pełną podróż przez serwer, jednocześnie zapewniając, że wszyscy inni użytkownicy otrzymają aktualizację.
Odporność połączenia
Jeśli połączenie WebSocket zostanie przerwane z powodu problemów sieciowych lub konserwacji serwera, widget automatycznie próbuje ponownie nawiązać połączenie. W okresie ponownego łączenia użytkownicy nadal mogą wchodzić w interakcje z istniejącymi znacznikami, ale nie będą widzieć aktualizacji w czasie rzeczywistym od innych użytkowników, dopóki połączenie nie zostanie przywrócone.
Po ponownym połączeniu widget ponownie synchronizuje stan, aby upewnić się, że nie pominął żadnych aktualizacji. Dzieje się to w sposób przezroczysty, bez potrzeby interwencji użytkownika.
Uwagi dotyczące przepustowości
Komunikaty WebSocket są lekkie i zawierają tylko niezbędne informacje potrzebne do synchronizacji stanu. Utworzenie nowego znacznika zwykle zużywa mniej niż 1KB przepustowości. System zawiera również inteligentne grupowanie, aby zmniejszyć częstotliwość komunikatów w okresach dużej aktywności.
Twoje metryki użycia w panelu FastComments śledzą pubSubMessageCount i pubSubBandwidth, dzięki czemu możesz monitorować aktywność synchronizacji w czasie rzeczywistym na swoich witrynach.
Synchronizacja między kartami
Jeśli użytkownik ma tę samą stronę otwartą w wielu kartach przeglądarki, aktualizacje w jednej karcie pojawiają się natychmiast w pozostałych kartach. Działa to przez ten sam mechanizm synchronizacji WebSocket i nie wymaga żadnej dodatkowej konfiguracji.
Użytkownicy mogą mieć Twoją witrynę otwartą na wielu urządzeniach jednocześnie, i wszystkie będą pozostawać zsynchronizowane. Znacznik utworzony na komputerze stacjonarnym pojawi się natychmiast na tablecie użytkownika, jeśli oba urządzenia wyświetlają ten sam obraz.
Bezpieczeństwo
Komunikaty WebSocket są przesyłane przez bezpieczne połączenia (WSS) i zawierają walidację najemcy, aby upewnić się, że użytkownicy otrzymują tylko aktualizacje do rozmów, do których są uprawnieni. Serwer weryfikuje wszystkie operacje przed ich rozgłoszeniem, aby zapobiec nieautoryzowanemu dostępowi lub manipulacji.
Zachowanie w trybie offline
Gdy użytkownicy są całkowicie offline, nadal mogą przeglądać istniejące znaczniki, ale nie mogą tworzyć nowych ani zobaczyć aktualizacji od innych. Widget wykrywa stan offline i wyświetla odpowiednie komunikaty.
Jeśli użytkownik spróbuje utworzyć znacznik będąc offline, a następnie wróci online, operacja zakończy się niepowodzeniem zamiast być kolejkowana, co zapewnia spójność danych. Użytkownicy powinni ponowić próbę operacji po przywróceniu połączenia.
Wpływ na wydajność
Połączenie WebSocket ma minimalny wpływ na wydajność. Połączenie pozostaje bezczynne, gdy nie występują żadne aktualizacje i przetwarza komunikaty tylko wtedy, gdy pojawia się aktywność. Dla typowego obrazu przy umiarkowanej aktywności znaczników, WebSocket zużywa mniej CPU niż samo renderowanie obrazu.
Dla stron z setkami jednoczesnych użytkowników i wysoką aktywnością tworzenia znaczników, system skaluje się horyzontalnie, aby utrzymać wydajność bez wpływu na pojedyncze połączenia klientów.
Zastosowania w pracy zespołowej
Synchronizacja w czasie rzeczywistym czyni Image Chat szczególnie przydatnym w przepływach pracy wymagających współpracy. Zespoły projektowe mogą wspólnie przeglądać makiety, a wszyscy widzą rozmieszczenie znaczników w czasie rzeczywistym. Zespoły wsparcia klienta mogą wspólnie adnotować zrzuty ekranu, aby zidentyfikować problemy. Grupy edukacyjne mogą omawiać diagramy, a wszyscy uczestnicy widzą znaczniki dodawane przez innych w miarę ich tworzenia.
Natychmiastowa informacja zwrotna tworzy bardziej angażujące i produktywne doświadczenie współpracy w porównaniu z tradycyjnymi systemami komentarzy, gdzie użytkownicy muszą odświeżyć stronę, aby zobaczyć aktualizacje.
Dokumentacja API 
Przegląd API
Image Chat udostępnia trzy końcówki REST API do zarządzania rozmowami obrazkowymi programowo. Te końcówki pozwalają pobierać, tworzyć i usuwać markery bez użycia widżetu w przeglądarce.
Wszystkie końcówki API wymagają uwierzytelnienia i stosują standardowe wzorce FastComments API. Są to publiczne końcówki, które uwierzytelniają za pomocą ciasteczek przeglądarki, a nie kluczy API.
URL bazowy
Wszystkie końcówki API Image Chat znajdują się pod:
https://fastcomments.com/comment-image-chats
Uwierzytelnianie
Te końcówki uwierzytelniają użytkowników za pomocą ciasteczek przeglądarki. Nie używają kluczy API. Użytkownicy muszą być zalogowani w FastComments w swojej przeglądarce, aby uzyskać dostęp do tych końcówek.
Pobierz wszystkie rozmowy
Pobierz wszystkie rozmowy dotyczące konkretnego obrazu.
Punkt końcowy
GET /comment-image-chats/:tenantId?urlId=<urlId>
Parametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy (Tenant ID) FastComments.
urlId (parametr zapytania, wymagany) to identyfikator obrazu, dla którego chcesz pobrać rozmowy.
Odpowiedź
Odpowiedź zawiera status API, informacje o bieżącej sesji użytkownika, jeśli jest uwierzytelniony, tablicę rozmów z ich identyfikatorami, URL-ami oraz współrzędnymi X/Y, oczyszczony identyfikator URL, flagę wskazującą, czy bieżący użytkownik jest administratorem strony lub moderatorem, oraz szczegóły połączenia WebSocket do synchronizacji na żywo, w tym tenantIdWS, urlIdWS i userIdWS.
Przykładowe żądanie
curl "https://fastcomments.com/comment-image-chats/demo?urlId=my-product-image" \
--cookie "your-session-cookie"
Przykładowa odpowiedź
{
"status": "success",
"user": {
"id": "user123",
"username": "john_doe"
},
"conversations": [
{
"_id": "conv123",
"urlId": "my-product-image:/images/product.jpg:25:30",
"x": 25.5,
"y": 30.2
},
{
"_id": "conv456",
"urlId": "my-product-image:/images/product.jpg:60:45",
"x": 60.8,
"y": 45.1
}
],
"urlIdClean": "my-product-image",
"isSiteAdmin": false,
"tenantIdWS": "demo",
"urlIdWS": "my-product-image",
"userIdWS": "user123"
}
Utwórz rozmowę
Utwórz nową rozmowę obrazkową dla konkretnego miejsca na obrazie.
Punkt końcowy
POST /comment-image-chats/:tenantId
Parametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy FastComments.
Ciało żądania musi być w formacie JSON i zawierać następujące wymagane pola.
urlId (string, wymagany) to podstawowy identyfikator strony.
windowUrlId (string, wymagany) to URL połączony ze źródłem obrazu i współrzędnymi, na przykład my-page:/images/photo.jpg:25.5:30.2.
pageTitle (string, wymagany) to tytuł strony.
src (string, wymagany) to URL źródła obrazu.
x (number, wymagany) to współrzędna X jako procent (0-100).
y (number, wymagany) to współrzędna Y jako procent (0-100).
createdFromCommentId (string, wymagany) to identyfikator komentarza, który zainicjował tę rozmowę.
broadcastId (string, wymagany) to UUID do synchronizacji na żywo, zapobiegający efektom echa.
Odpowiedź
Odpowiedź zawiera status API oraz identyfikator nowo utworzonej rozmowy.
Przykładowe żądanie
curl -X POST "https://fastcomments.com/comment-image-chats/demo" \
--cookie "your-session-cookie" \
-H "Content-Type: application/json" \
-d '{
"urlId": "my-product-image",
"windowUrlId": "my-product-image:/images/product.jpg:25.5:30.2",
"pageTitle": "Product Gallery",
"src": "/images/product.jpg",
"x": 25.5,
"y": 30.2,
"createdFromCommentId": "comment789",
"broadcastId": "550e8400-e29b-41d4-a716-446655440000"
}'
Przykładowa odpowiedź
{
"status": "success",
"createdChatId": "conv789"
}
Usuń rozmowę
Usuń istniejącą rozmowę obrazkową. Ta końcówka wymaga uprawnień administratora lub moderatora, albo rozmowa musi być utworzona przez uwierzytelnionego użytkownika.
Punkt końcowy
DELETE /comment-image-chats/:tenantId/:chatId
Parametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy FastComments.
chatId (parametr ścieżki, wymagany) to identyfikator rozmowy, którą chcesz usunąć.
broadcastId (ciało żądania, wymagane) to UUID do synchronizacji na żywo.
Przykładowe żądanie
curl -X DELETE "https://fastcomments.com/comment-image-chats/demo/conv789" \
--cookie "your-session-cookie" \
-H "Content-Type: application/json" \
-d '{
"broadcastId": "550e8400-e29b-41d4-a716-446655440001"
}'
Przykładowa odpowiedź
{
"status": "success"
}
Układ współrzędnych
Współrzędne X i Y są przechowywane jako procenty wymiarów obrazu. X reprezentuje pozycję poziomą od lewej krawędzi (0 = lewa krawędź, 100 = prawa krawędź). Y reprezentuje pozycję pionową od górnej krawędzi (0 = górna krawędź, 100 = dolna krawędź).
Wartości procentowe mogą zawierać miejsca dziesiętne dla precyzji. Na przykład, x: 25.5 oznacza 25.5% od lewej krawędzi obrazu.
Ograniczenia szybkości (Rate Limiting)
Te końcówki podlegają standardowym ograniczeniom szybkości FastComments API. Middleware ograniczający liczbę żądań działa per-tenant, aby zapobiegać nadużyciom przy jednoczesnym umożliwieniu normalnych wzorców użycia.
Odpowiedzi błędów
Wszystkie końcówki zwracają standardowe kody statusu HTTP. Odpowiedź 400 oznacza nieprawidłowe parametry żądania. Odpowiedź 401 oznacza nieudane uwierzytelnienie. Odpowiedź 403 wskazuje na niewystarczające uprawnienia. Odpowiedź 404 oznacza, że rozmowa nie została znaleziona. Odpowiedź 429 oznacza przekroczenie limitu żądań.
Odpowiedzi błędów zawierają ciało JSON z szczegółami:
{
"status": "error",
"message": "Conversation not found"
}
Śledzenie użycia
Tworzenie rozmów zwiększa Twoją metrykę użycia conversationCreateCount. Cała aktywność synchronizacji WebSocket zwiększa pubSubMessageCount oraz pubSubBandwidth. Możesz monitorować te metryki w panelu FastComments w zakładce analytics dotyczącej użycia.
Masz pytania?
To wszystko w przypadku FastComments Image Chat! Jeśli masz pytania, potrzebujesz pomocy przy wdrożeniu lub masz sugestie dotyczące funkcji, daj nam znać poniżej lub skontaktuj się z naszym zespołem wsparcia.
Zobacz demo na żywo na naszej stronie demonstracyjnej, aby zobaczyć Image Chat w akcji.