Проблемы с записями сессий
Записи появляются на дашборде через несколько минут (~4 мин) после завершения сессии. Сессия считается завершённой, когда пользователь закрывает вкладку или браузер, отключается (более чем на 2 мин) или превышает 2 часа (в этом случае начинается новая сессия). Каждая вкладка приводит к новой записи, тогда как перезагрузка существующей вкладки не запускает новую.
Этот раздел призван помочь вам устранить распространённые проблемы при повторе сессий.
Повторы не отображаются в списке
Section titled Повторы не отображаются в спискеПрежде чем приступать к отладке записей сессий, убедитесь, что вы захватываете весь трафик. Нажмите кнопку Manage в разделе Sessions и включите Capture All.
Ещё одна распространённая ошибка — запуск трекера дважды, что препятствует записи сессий. Обычно это происходит, когда разработчики переходят от настройки на основе скрипта к использованию пакета npm, поэтому убедитесь, что у вас используется только один из них.
Проверка установки
Section titled Проверка установкиЕсли вы не уверены в настройке, откройте инспектор браузера и проверьте вкладку Network, чтобы увидеть, есть ли XHR-запросы (ищите «ingest»), отправленные на ваш IP/домен (или *.openreplay.com, если вы используете OpenReplay Cloud).
Другой способ — использовать callback запуска трекера и вывести сообщение в лог при запуске.
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
});
tracker.start().then(({sessionID}) => console.log("OpenReplay tracker started with session: ", sessionID))
// OR you can use startCallback method
tracker.start({
startCallback: ({ sessionID }) => console.log("OpenReplay tracker started with session: ", sessionID)
});
// for snippet, just add startCallback to initOpts
Тестирование в localhost
Section titled Тестирование в localhostOpenReplay требуется публичный доступ для копирования некоторых ресурсов вашего приложения (CSS, шрифтов и иконок) для корректной отрисовки записей. Ваш сайт также должен использовать SSL/HTTPS, иначе трекер не запустится. По этим причинам сессии не будут захватываться в localhost, если только вы не добавите опцию inlineCss: 3 в конструктор трекера, чтобы таблицы стилей захватывались как часть каждого повтора (вместо централизованного кэширования на сервере).
Сайт не использует HTTPS
Section titled Сайт не использует HTTPSПо соображениям безопасности трекер работает только в веб-приложениях, использующих SSL (HTTPS). Если ваш сайт работает по HTTP, трекер не запустится.
Отсутствует CSP
Section titled Отсутствует CSPЕсли вы видите ошибку, похожую на приведённую ниже, значит, OpenReplay не смог запуститься из-за отсутствия политики безопасности контента. Смотрите здесь политику, которую нужно добавить.

OpenReplay заблокирован
Section titled OpenReplay заблокированСкрипт записи может быть заблокирован расширением браузера, например блокировщиком рекламы. Используйте инспектор браузера, чтобы проверить, не завершаются ли запросы с ошибкой. Если это так, добавьте исключение для домена, на котором установлен бэкенд OpenReplay (или openreplay.com, если вы используете облачное решение).
Из-за неподдерживаемого браузера
Section titled Из-за неподдерживаемого браузераOpenReplay выбрасывает исключение при запуске в неподдерживаемом браузере. Смотрите здесь список поддерживаемых браузеров.
Повторы отображаются некорректно
Section titled Повторы отображаются некорректноОтсутствуют стили
Section titled Отсутствуют стилиДля работы повторов OpenReplay требуется доступ к ресурсам, таким как ваш css. Фактически эти файлы копируются и затем кэшируются нашим бэкендом, чтобы вы могли просматривать старые записи, даже если ваше веб-приложение изменилось. Вот почему вы должны убедиться, что ваши стили (а также иконки и шрифты) общедоступны. Даже если это так, некоторые CDN (например, CloudFlare) считают наши запросы на кэширование исходящими от бота и поэтому блокируют их. Если это ваш случай, обязательно добавьте в белый список исходный IP вашей VM (если вы используете нашу версию с открытым исходным кодом), вашего выделенного инстанса (если вы используете наш тарифный план выделенного облака) или следующие IP (если вы используете наш тарифный план serverless-облака): 18.197.95.153 и 18.197.221.118.
Если ваши ресурсы размещены на домене с ограниченным доступом (приватном или защищённом), OpenReplay не сможет скопировать и использовать их в повторах. У вас есть 2 варианта:
- (Рекомендуется) Добавьте опцию
inlineCss: 3в конструктор трекера, чтобы таблицы стилей захватывались как часть каждого повтора (вместо централизованного кэширования на сервере). - Либо вы можете скопировать свои ресурсы на общедоступный домен, а затем использовать опцию
resourceBaseHref, чтобы указать домен в конструкторе трекера.
Если ваши iFrame с тем же источником содержат вложенные фреймы, обязательно используйте абсолютный путь (в элементах <link>, указывающих на ваши файлы CSS) в каждом встроенном фрейме или используйте опцию resourceBaseHref, чтобы указать домен в конструкторе трекера.
Если вы тестируете в localhost, стили не будут отрисовываться, так как OpenReplay не может получить к ним доступ, поскольку они находятся на вашей машине. Следуйте этому руководству, чтобы исправить ситуацию.
Белый экран
Section titled Белый экранВ редких случаях повтор может отображаться пустым (или белым). Хотя страницы не отрисовываются, вы по-прежнему можете видеть движение мыши пользователя. Попробуйте установить опцию disableStringDict в значение true и посмотрите, поможет ли это с новыми записями. Обычно это решает проблему.
Чёрный экран
Section titled Чёрный экранЕсли вы используете canvas поверх слоя фронтенда (с более высоким zIndex), вы можете заметить чёрный экран во время повтора записанных сессий. Это происходит потому, что веб-API пока не позволяет нам захватывать альфа-канал. Если это относится к вашему веб-приложению, добавьте HTML-атрибут data-openreplay-hidden к проблемному элементу canvas, чтобы полностью скрыть его из записи сессии.
Изображения не отображаются
Section titled Изображения не отображаютсяВ отличие от стилей, изображения не кэшируются OpenReplay, а извлекаются во время повтора сессии. Поэтому они должны быть общедоступными. Если они находятся на CDN, обязательно сохраняйте старые версии ваших изображений, чтобы можно было корректно воспроизводить старые записи сессий.
Iframe
Section titled IframeЕсли ваше веб-приложение включает iframe, вы не сможете воспроизводить их содержимое в рамках ваших записей. Вы по-прежнему можете запустить OpenReplay внутри iframe, добавив tracker.start(), но он будет считаться отдельной вкладкой, а значит, будет захвачен в отдельной записи.
Повторы прерываются между поддоменами
Section titled Повторы прерываются между поддоменамиСайты, распределённые по множеству поддоменов, будут генерировать несколько сессий для одного посещения. Вы можете объединить их в единую запись, передав sessionHash в метод start() трекера. sessionHash можно сохранить, а затем извлечь из вашего междоменного хранилища (например, из cookies).
// Initialize the tracker as you would normally do
import { tracker } from '@openreplay/tracker'
tracker.configure({
projectKey: PROJECT_KEY
})
// or with class instance:
import OpenReplay from '@openreplay/tracker'
const tracker = new OpenReplay({
projectKey: PROJECT_KEY
})
...
// Make sure the tracker is stopped when passing subdomains and collect the sessionHash
const sessionHash = tracker.stop(); // This can be saved in cookies or passed through URL (if needed)
...
// Initialize another tracker on the new subdomain with the same projectKey
// then Pass the sessionHash to the newly started session
trackerNewDomain.start({
sessionHash, // This can be retrieved from cookies or URL (if needed)
})
В случае, если продолжить сессию невозможно (она не существует или завершена), трекер автоматически запустит новую.
Повторы неполные
Section titled Повторы неполныеЭто можно заметить в повторах, в которых есть только одна посещённая страница и которые завершаются, как только пользователь переходит на другую страницу. Обычно это происходит на сайтах, которые не являются одностраничными приложениями (SPA). Чтобы исправить это, необходимо вызывать tracker.start() на каждой странице.
Повторы отсутствуют
Section titled Повторы отсутствуютЕсли вы не размещаете OpenReplay самостоятельно, а используете наше размещённое решение, то, возможно, некоторые сессии не записываются, поскольку запросы к нашим серверам могут блокироваться. Обычно это вызвано блокировщиками рекламы, VPN или расширениями браузера.
Есть вопросы?
Section titled Есть вопросы?Если у вас есть вопросы об этом процессе, не стесняйтесь обращаться к нам в нашем Slack или загляните на наш Форум.