Проблемы с Записями Сессий

Всевозможные проблемы, мешающие захвату или корректному отображению повторов.

Проблемы с Записями Сессий

Записи появляются в панели управления через несколько минут (~4 мин) после завершения сессии. Сессия считается завершённой, когда пользователь закрывает вкладку или браузер, отключается (более чем на 2 мин) или превышает 2 часа (в этом случае начинается новая сессия). Каждая вкладка создаёт новую запись, тогда как перезагрузка существующей вкладки не запускает новую.

Этот раздел призван помочь вам устранить распространённые проблемы с повторами сессий.

Повторы не отображаются в списке

Section titled Повторы не отображаются в списке

Прежде чем приступить к отладке записей сессий, убедитесь, что вы захватываете весь трафик. Нажмите кнопку Manage в разделе Sessions и включите Capture All.

Ещё одна распространённая ошибка заключается в двойном запуске трекера, что препятствует записи сессий. Обычно это происходит, когда разработчики переходят от настройки на основе скрипта к использованию npm-пакета, поэтому убедитесь, что у вас есть только один из вариантов.

Проверьте установку

Section titled Проверьте установку

Если вы не уверены в настройке, откройте инспектор браузера и проверьте вкладку Network, чтобы увидеть, есть ли XHR-запросы (ищите “ingest”), отправляемые на ваш IP/домен (или *.openreplay.com, если вы используете OpenReplay Cloud).

Другой способ — обновить конструктор трекера и выводить сообщение при запуске.

const tracker = new OpenReplay({
	projectKey: PROJECT_KEY,
	onStart: ({ sessionID }) => console.log("OpenReplay tracker started with session: ", sessionID),
});

Тестирование на localhost

Section titled Тестирование на localhost

OpenReplay требуется публичный доступ для копирования некоторых ресурсов вашего приложения (CSS, шрифтов и иконок) для корректного отображения записей. Ваш сайт также должен использовать SSL/HTTPS, иначе трекер не запустится. По этим причинам сессии не будут захватываться на localhost, если только вы не примените этот обходной путь.

Сайт не использует HTTPS

Section titled Сайт не использует HTTPS

В целях безопасности трекер работает только в веб-приложениях, использующих SSL (HTTPS). Если ваш сайт работает по HTTP, трекер не запустится.

Если вы видите ошибку, подобную приведённой ниже, значит, OpenReplay не смог запуститься из-за отсутствующей политики безопасности контента. См. здесь политику, которую нужно добавить.

CSP Issue

OpenReplay заблокирован

Section titled OpenReplay заблокирован

Скрипт записи может быть заблокирован расширением браузера, например блокировщиком рекламы. Используйте инспектор браузера, чтобы проверить, не завершаются ли запросы ошибкой. Если так, добавьте исключение для домена, на котором установлен бэкенд OpenReplay (или openreplay.com, если вы используете облачное предложение).

Из-за неподдерживаемого браузера

Section titled Из-за неподдерживаемого браузера

OpenReplay выбрасывает исключение, когда он запускается в неподдерживаемом браузере. См. здесь список поддерживаемых браузеров.

Повторы отображаются некорректно

Section titled Повторы отображаются некорректно

Отсутствуют стили

Section titled Отсутствуют стили

OpenReplay нужен доступ к ресурсам, таким как ваш css, чтобы повторы работали. Фактически, эти файлы копируются, а затем кэшируются нашим бэкендом, так что вы можете просматривать старые записи, даже если ваше веб-приложение изменилось. Именно поэтому вы должны убедиться, что ваши стили (а также иконки и шрифты) общедоступны. Если ваши ресурсы размещены на домене с ограниченным доступом (приватном или защищённом), то OpenReplay не сможет скопировать и использовать их в повторах. Вы можете скопировать их на общедоступный домен, а затем использовать опцию resourceBaseHref, чтобы указать домен в конструкторе трекера.

Если ваши iFrame с одинаковым источником содержат вложенные фреймы, убедитесь, что используете абсолютные пути (в элементах <link>, указывающих на ваши CSS-файлы) в каждом встроенном фрейме, или используйте опцию resourceBaseHref, чтобы указать домен в конструкторе трекера.

В случае тестирования на localhost стили не будут отображаться, поскольку OpenReplay не может получить к ним доступ, так как они находятся на вашем компьютере. Следуйте этому руководству, чтобы исправить ситуацию.

В редких случаях повтор может отображаться пустым (или белым). Хотя страницы не будут отрисовываться, вы по-прежнему можете видеть движение мыши пользователя. Попробуйте установить опцию disableStringDict в значение true и проверьте, помогает ли это с новыми записями. Обычно это решает проблему.

Если вы используете canvas поверх слоя вашего фронтенда (с более высоким zIndex), вы можете заметить чёрный экран во время повтора записанных сессий. Это происходит потому, что веб-API пока не позволяет нам захватывать альфа-канал. Если это относится к вашему веб-приложению, добавьте HTML-атрибут data-openreplay-hidden к проблемному элементу canvas, чтобы полностью скрыть его из записи сессии.

Изображения не отображаются

Section titled Изображения не отображаются

В отличие от стилей, изображения не кэшируются OpenReplay, а извлекаются во время повтора сессии. Поэтому они должны быть общедоступными. Если они находятся на CDN, убедитесь, что вы сохраняете старые версии своих изображений, чтобы можно было корректно воспроизводить старые записи сессий.

Если ваше веб-приложение включает iframe, вы не сможете воспроизводить их содержимое в составе ваших записей. Вы по-прежнему можете запустить OpenReplay внутри iframe, добавив tracker.start(), но он будет считаться отдельной вкладкой, что означает, что он будет захвачен в отдельную запись.

Повторы нарушены при переходе между поддоменами

Section titled Повторы нарушены при переходе между поддоменами

Сайты, распределённые по множеству поддоменов, будут генерировать несколько сессий для одного посещения. Вы можете сшить их в единую запись, передав sessionHash в метод start() трекера. sessionHash можно сохранить, а затем извлечь из вашего междоменного хранилища (например, из cookie).

// Initialize the tracker as you would normally do
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
const trackerNewDomain = new OpenReplay({
  projectKey: PROJECT_KEY
})
// 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 или расширениями браузера.

Если у вас есть какие-либо вопросы об этом процессе, не стесняйтесь обращаться к нам в нашем Slack или загляните на наш Форум.