Вопрос или проблема
Это приложение для сайта, представляющее собой слайд-шоу изображений (php
/js
), которое я создал для больших экрана телевизоров на работе, которые мы используем для рекламы предстоящих мероприятий нашим посетителям.
Телевизоры будут иметь мини-компьютеры, подключенные через HDMI. Компьютеры загружаются в режиме киоска/полноэкранном режиме Chromium и указывают на URL приложения, то есть ‘https://mysite/tv/hall/index.php’. Я использую кэшированный js
скрипт, чтобы менять изображения каждые 10 секунд и location.reload() (обновление страницы)
после последнего изображения, чтобы начать новый цикл (это позволяет вносить изменения в новые/удаленные изображения).
Все это работает хорошо, ЗА ИСКЛЮЧЕНИЕМ того, что наш интернет-сервис ATT, как правило, отключается как минимум раз в день. Поначалу, когда это происходит, изображения останавливаются, и я получаю что-то вроде Содержимое этой страницы не может быть отображено.
Если отключение происходит на короткий период времени, скажем, менее 2 минут, кэшированный js
обновление будет продолжаться несколько циклов, и если интернет быстро возвращается, он возвращается к содержимому. Однако при более длительном отключении обновление прекращается, и Chrome отображает страницу err_internet_disconnected
. URL остается тем же на протяжении всего времени. У меня нет никого, кто мог бы перезагрузить ПК или нажать F5, когда меня нет, поэтому это должно быть автоматически.
Текущий компьютер – это Raspberry Pi с более ранней версией Raspberry Pi OS (Linux), используя Chromium, который у меня был под рукой для старта, однако я буду использовать ПК на базе Windows или Ubuntu на других телевизорах с обычным Chrome или Chromium, как только я это усовершенствую. Я думаю, что проблема все равно останется прежней.
Есть идеи, как либо отключить этот err_internet_disconnected
‘механизм’ в браузере, чтобы продолжать js
обновление страницы до тех пор, пока интернет не вернется – или – есть ли способ настроить Chromium на автоматическое обновление каждые час (поскольку URL остается тем же)? Или перезагрузить себя… Или любые другие идеи?
Ответ или решение
Исследуем конкретную проблему, с которой вы столкнулись, и возможные решения для автоматизации обновления вашего сайта-витрины на основе Chromium. Ваше приложение использует слайд-шоу изображений для отображения предстоящих мероприятий на больших экранах, и проблема заключается в том, что при временной потере интернет-соединения страница останавливает обновление.
1. Объяснение проблемы:
Ваша структура сайта делает его зависимым от постоянного интернет-соединения. Когда интернет отключается, браузер Chromium отображает сообщение об ошибке err_internet_disconnected
, что приводит к остановке вашего JavaScript-кода обновления страниц, поскольку он больше не может эффективно взаимодействовать с загружаемыми ресурсами.
2. Возможное решение:
К сожалению, отключить механизм обработки ошибок браузера или изменить его поведение при отсутствии соединения невозможно. Однако есть несколько обходных путей, которые могут помочь вам минимизировать влияние отключений.
3. Запуск альтернативного кода при отсутствии соединения:
Вы можете реализовать автоматическую реализацию контроля состояния соединения, используя JavaScript. Этот код будет периодически проверять доступность сети и выполнять перезагрузку страницы при восстановлении соединения. Добавьте следующий код в ваш JavaScript:
function checkConnection() {
if (navigator.onLine) {
// Условие для обновления изображений
location.reload();
} else {
console.warn("Нет подключения к интернету. Ожидание восстановления...");
}
}
setInterval(checkConnection, 10000); // Проверка на наличие соединения каждые 10 секунд
Этот подход позволяет вам периодически проверять статус соединения и, при его наличии, обновлять контент без ручных манипуляций.
4. Автоперезагрузка Chromium:
Также можно настроить Chromium на автоматическую перезагрузку через определенные промежутки времени. Для этого используйте команду в системе, которая отслеживает состояние Chromium. Использование скриптов на Bash или Batch-файлов в Windows может быть полезным. При отсутствии интернет-подключения вы можете настроить выполнение следующего:
#!/bin/bash
while true; do
if ! ping -c 1 google.com &> /dev/null; then
echo "Интернет отключен. Перезагрузка браузера через 5 минут."
sleep 300
pkill chromium
chromium --kiosk "https://mysite/tv/hall/index.php"
else
sleep 60
fi
done
Данный скрипт проверяет наличие интернет-соединения и перезапускает Chromium через каждые 5 минут, если оно отсутствует.
5. Использование других индикаторов:
Рассмотрите возможность использования системы оповещений, чтобы получать уведомления о статусе подключения к интернету. Например, вы можете использовать внешние инструменты мониторинга, которые будут уведомлять вас о статусе сети.
Заключение:
Нельзя полностью отключить сообщения об ошибках в Chromium, но с помощью описанных выше решений вы сможете минимизировать время простоя вашей витрины. Это повысит удобство использования вашего приложения и снизит его зависимость от интернет-соединений. Обсудите с вашей командой или сделайте тестирование, чтобы убедиться, что все подходы работают в вашей постоянной среде.