Немедленно отбросить непрочитанные данные из потокового потока?

У меня есть следующие настройки:

Входной поток (MP3-поток IceCast)

  • Node.JS сокет от сервера connection Перезвоните

Выходные потоки (любая комбинация, включая ни одной)

  • HTTP-ответ от Express
  • WritableStream создан с использованием fs.createWriteStream
  • PassThrough поток по трубопроводу ffmpeg для дополнительной обработки

Я передаю сокет входного потока в этот поток:

const ProxyStream = require('stream').Transform;
/// This is how I create it:

this.proxy = new ProxyStream({
    transform: function (data, encoding, callback) {
        callback(null, data);
    }
});

/// This is how I pipe it
socket.pipe(this.proxy, { end: false });

Причиной этого прокси-канала является то, что я хочу скрыть тот факт, что источник отключился, и просто не предоставлять данные, пока он не подключится.

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

Что я знаю, так это то, что это как-то связано с тем, что с трубой ничего не связано.

Так что я хочу, чтобы изменить свой ProxyStream так что, если к выходу ничего не подключено, он отбросит данные и будет действовать так, как если бы они были прочитаны.

Как это сделать?

0 ответов

Другие вопросы по тегам