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