Чтение файла в режиме реального времени с помощью Node.js

Мне нужно разработать лучший способ чтения данных, которые записываются в файл, используя node.js, в реальных условиях. время. Проблема в том, что Node — это быстро движущийся корабль, который затрудняет поиск наилучшего метода решения проблемы.

Что я хочу сделать
У меня есть процесс Java, который что-то делает, а затем записывает результаты этого действия в текстовый файл. Обычно для запуска требуется от 5 минут до 5 часов, при этом данные записываются все время, и может достигать довольно высоких скоростей пропускной способности (около 1000 строк в секунду).

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

Клиент, графы, сокеты и логика агрегации готовы, но я не знаю, как лучше всего читать файл.

Что я пробовал (или, по крайней мере, играл)
FIFO— я могу сказать моему Java-процессу, чтобы он писал в fifo и читал его с помощью узла, на самом деле это то, как мы это реализуем в настоящее время, используя Perl, но поскольку все остальное выполняется в узле, имеет смысл перенести код.

Сокеты Unix— См. выше.

fs.watchFile— подойдет ли это для того, что нам нужно?

fs.createReadStream— это лучше, чем watchFile?

fs& tail -f— похоже на хак.

Каков, собственно, мой Вопрос
Я склоняюсь к использованию сокетов Unix, это кажется самым быстрым вариантом. Но есть ли в узле лучшие встроенные функции для чтения файлов из фс в реальном времени?

12
задан Oliver Lloyd 27 June 2012 в 11:18
поделиться