Мне нужно разработать лучший способ чтения данных, которые записываются в файл, используя node.js, в реальных условиях. время. Проблема в том, что Node — это быстро движущийся корабль, который затрудняет поиск наилучшего метода решения проблемы.
Что я хочу сделать
У меня есть процесс Java, который что-то делает, а затем записывает результаты этого действия в текстовый файл. Обычно для запуска требуется от 5 минут до 5 часов, при этом данные записываются все время, и может достигать довольно высоких скоростей пропускной способности (около 1000 строк в секунду).
Я хотел бы прочитать этот файл в режиме реального времени, а затем, используя узел, агрегировать данные и записать их в сокет, где они могут быть отображены на клиенте.
Клиент, графы, сокеты и логика агрегации готовы, но я не знаю, как лучше всего читать файл.
Что я пробовал (или, по крайней мере, играл)
FIFO
— я могу сказать моему Java-процессу, чтобы он писал в fifo и читал его с помощью узла, на самом деле это то, как мы это реализуем в настоящее время, используя Perl, но поскольку все остальное выполняется в узле, имеет смысл перенести код.
Сокеты Unix
— См. выше.
fs.watchFile
— подойдет ли это для того, что нам нужно?
fs.createReadStream
— это лучше, чем watchFile?
fs
& tail -f
— похоже на хак.
Каков, собственно, мой Вопрос
Я склоняюсь к использованию сокетов Unix, это кажется самым быстрым вариантом. Но есть ли в узле лучшие встроенные функции для чтения файлов из фс в реальном времени?