Постоянно отслеживать локальный файл для новых строк, используя Javascript в браузере

У меня есть файл, к которому часто добавляются новые строки. Я хочу создать веб-приложение, работающее в браузере с использованием javascript, которое сможет обнаруживать изменения в этом локальном файле и печатать новый контент, добавленный в файл.

Мое решение включает в себя использование опроса javascript с помощью setInterval и нового файлового API HTML5. Я загружаю файл, используя поле входного файла, а затем опрашиваю размер файла. Каждый раз, когда размер изменяется (в моем случае увеличивается), это указывает мне на то, что в файл добавлено новое содержимое. Затем я нарезаю файл с помощью Blob и беру только то содержимое, которое было добавлено, используя старый размер файла в качестве начала и новый размер файла в качестве конца.

Как правило, это хорошо работает со средним интервалом (я использую 500 мс), но мне любопытно, есть ли лучшее решение, потому что это звучит для меня немного как взлом.


person John Papastergiou    schedule 20.01.2015    source источник
comment
Это звучит как хорошее решение для меня.   -  person Scimonster    schedule 20.01.2015


Ответы (1)


Вы можете использовать js-logtail для следующих файлов, таких как tail -f :

<head>
    <title>habitat parser log viewer</title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="logtail.js"></script>
    <link href="logtail.css" rel="stylesheet" type="text/css">
</head>

<body>
    <div id="header">
        js-logtail.
        <a href="./">Reversed</a> or
        <a href="./?noreverse">chronological</a> view.
        <a id="pause" href='#'>Pause</a>.
    </div>
    <pre id="data">Loading...</pre>
</body>

Вам даже не нужна серверная часть, веб-сервер (как apache, lighthttpd) обрабатывает это с помощью заголовка HTTP Range внутри.

person WeSee    schedule 30.08.2015
comment
Это для удаленных файлов, а не для локальных файлов. - person Alexander Craggs; 03.12.2017
comment
Хорошо, это более общее решение, которое работает и для локальных файлов, если есть доступный веб-сервер. - person WeSee; 03.12.2017
comment
Это справедливо, однако маловероятно, что каждый клиент, посещающий ваш веб-сайт с настройкой веб-сервера для предоставления определенных файлов, маловероятен. Просто проверяю, вы понимаете, что LogTail, похоже, настроен на сохранение файлов с сервера? Не от клиента? Следовательно, почему он использует запросы XHR, а не API файлов HTML5, как это предлагается в вопросе. - person Alexander Craggs; 04.12.2017