Немедленно отбросить непрочитанные данные из потокового потока?
У меня есть следующие настройки:
Входной поток (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
так что, если к выходу ничего не подключено, он отбросит данные и будет действовать так, как если бы они были прочитаны.
Как это сделать?