Как LiveReload (и другие подобные приложения) работают технически?

Есть отличные инструменты для веб-разработки, которые облегчают жизнь разработчиков. Приложения, такие как LiveReload и CodeKit - отличные примеры.

Все, что меня интересует, это то, как они делают онлайн-перезагрузку веб-страницы в веб-браузере (будь то Chrome, Firefox или что-то еще) изнутри, когда изменения файла записываются на жесткий диск.

Как они на самом деле это делают? Существуют ли какие-либо API, которые поставщики веб-браузеров выставляют для выполнения этого? или его просто настраиваемая серверная сторона script, которая вводится на веб-страницу (на самом деле не написана веб-разработчиком) до того, как она дойдет до браузера, а некоторые магии Ajax произойдут, когда файл будет изменен на диске.

Я планирую разработать что-то подобное в Python или Vala (Linux) и .NET(Windows), поэтому, пожалуйста, дайте мне знать, если есть какая-то документация, доступная для этого.

Ответ 1

Из Часто задаваемые вопросы по LiveReload:

Чтобы взаимодействовать с вашими браузерами, LiveReloads нуждается в его JavaScript код, который будет введен в ваши веб-страницы. Есть 3 способа организовать что:

  • либо добавьте тег script в свой HTML-код вручную, либо
  • установите расширение браузера (при активации добавьте тег script на посещенные страницы на лету) или
  • используйте плагин для вашей веб-инфраструктуры (который добавляет тег script на лету при обслуживании запросов), в настоящее время доступен только для Рельсы /Rack.

Кроме того, я знаю, что этот вопрос старый, но для тех, кто также получил здесь поиск "livereload python", есть отличный сервер LiveReload, написанный на python.

Ответ 2

Обычно они (всегда?) основаны на довольно простой концепции - каждый так часто, некоторые триггеры клиентского кода, которые запрашивают сервер script, если файл обновлен. Если и только если он имеет, он перезагружает страницу - или, для определенных сайтов (думаю, SO и некоторые сайты социальных сетей), он загружает только новую информацию и загружает ее на месте.

В том случае, если вы разрабатываете локальную песочницу, они также могут слушать, что файл ОС "изменен", вместо того, чтобы иметь сервер, способный отвечать на настроенные запросы AJAX. Большинство операционных систем предоставляют эти сигналы - например, на Linux у вас есть inotify. С их веб-страницы видно, что LiveReload использует такую ​​систему - часть их пакета - это набор плагинов браузера, которые предположительно предоставляют API-интерфейсы Javascript для служб ОС и настраивают правила для браузеров браузера, чтобы разрешить это.