В настоящее время узел-веб-сокет-сервер принимает данные только в виде строк, а не буферов. Буферы могут быть приняты в будущем, это в значительной степени связано с ограничением кадров и тем, что я не хочу делать большое количество буферного копирования. (Кажется безответственно выписывать в сокет только 0xFF или 0x00).
Также попробуйте сделать:
var tail = spawn('tail', ['-f', filename]);
tail.stdout.setEncoding('utf8')
Поскольку потоки stdout и stderr по умолчанию не используют кодировку, это означает, что событие data испускает объекты Buffer. Относительно того, почему это работает на вашем Mac, но не работает в Ubuntu, я не уверен, но, выполняя быстрый тест только минуту назад, у меня есть и Ubuntu, и Mac, дающие мне объекты буфера, если я специально не установил кодировку потоков.