Проблемы с записями сессий
Записи появляются на панели управления через несколько минут (~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, если только вы не примените это обходное решение.
Сайт не использует HTTPS
Section titled Сайт не использует HTTPSВ целях безопасности трекер работает только на веб-приложениях, использующих SSL (HTTPS). Если ваш сайт работает на HTTP, трекер не запустится.
Отсутствует CSP
Section titled Отсутствует CSPЕсли вы видите ошибку, аналогичную приведённой ниже, значит OpenReplay не смог запуститься из-за отсутствия политики безопасности контента. Смотрите здесь политику, которую необходимо добавить.

OpenReplay заблокирован
Section titled OpenReplay заблокированСкрипт записи может быть заблокирован расширением браузера, например блокировщиком рекламы. Используйте инспектор браузера, чтобы проверить, не завершаются ли запросы ошибкой. Если это так, добавьте исключение для домена, на котором установлен backend OpenReplay (или openreplay.com, если вы используете облачное предложение).
Из-за неподдерживаемого браузера
Section titled Из-за неподдерживаемого браузераOpenReplay генерирует исключение при запуске в неподдерживаемом браузере. Смотрите здесь список поддерживаемых браузеров.
Воспроизведения отображаются некорректно
Section titled Воспроизведения отображаются некорректноОтсутствуют стили
Section titled Отсутствуют стилиOpenReplay нужен доступ к ресурсам, таким как ваш CSS, чтобы воспроизведения работали. Фактически эти файлы копируются и затем кэшируются нашим backend, чтобы вы могли видеть старые записи, даже если ваше веб-приложение изменилось. Именно поэтому необходимо убедиться, что ваши стили (а также иконки и шрифты) общедоступны. Если ваши ресурсы размещены в домене с ограниченным доступом (приватном или защищённом), OpenReplay не сможет скопировать и использовать их в воспроизведениях. Вы можете скопировать их в общедоступный домен, а затем использовать параметр resourceBaseHref, чтобы указать домен в конструкторе трекера.
Если ваши iFrame того же источника содержат вложенные фреймы, обязательно используйте абсолютный путь (в элементах <link>, указывающих на ваши CSS-файлы) в каждом встроенном фрейме или используйте параметр resourceBaseHref, чтобы указать домен в конструкторе трекера.
Если вы тестируете на localhost, стили не будут отображаться, так как OpenReplay не может получить к ним доступ, поскольку они находятся на вашем компьютере. Следуйте этому руководству, чтобы исправить ситуацию.
Белый экран
Section titled Белый экранВ редких случаях воспроизведение может отображаться пустым (или белым). Хотя страницы не будут отрисованы, вы всё равно сможете видеть движение мыши пользователя. Попробуйте установить параметр disableStringDict в значение true и посмотрите, поможет ли это с новыми записями. Обычно это решает проблему.
Чёрный экран
Section titled Чёрный экранЕсли вы используете canvas поверх слоя вашего frontend (с более высоким zIndex), вы можете заметить чёрный экран во время воспроизведения записанных сессий. Это происходит потому, что web API пока не позволяет нам захватывать альфа-канал. Если это касается вашего веб-приложения, добавьте HTML-атрибут data-openreplay-hidden к проблемному элементу canvas, чтобы полностью скрыть его из записи сессии.
Изображения не отображаются
Section titled Изображения не отображаютсяВ отличие от стилей, изображения не кэшируются OpenReplay, а извлекаются во время воспроизведения сессии. Поэтому они должны быть общедоступными. Если они находятся в CDN, убедитесь, что вы сохраняете старые версии своих изображений, чтобы можно было корректно воспроизводить старые записи сессий.
Iframe
Section titled IframeЕсли ваше веб-приложение содержит iframe, вы не сможете воспроизводить их содержимое как часть ваших записей. Вы по-прежнему можете запустить OpenReplay внутри iframe, включив tracker.start(), но он будет считаться отдельной вкладкой, что означает, что он будет захвачен в отдельную запись.
Воспроизведения нарушены между поддоменами
Section titled Воспроизведения нарушены между поддоменамиСайты, распределённые по множеству поддоменов, будут генерировать несколько сессий для одного посещения. Вы можете объединить их в одну запись, передав sessionHash в метод start() трекера. sessionHash можно сохранить, а затем извлечь из вашего межсайтового хранилища (например, cookie).
// 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 или загляните на наш форум.