Как в Node.js можно сохранять stream, кроме как в память? Пробовал использовать Redis, но он работает только со строками, датами и буферами. Пример текущего кода:
const Docker = require('dockerode');
const streams = {};
exports.startTerminal = async (id, socket) => {
const container = docker.getContainer(id);
try {
const inspectData = await container.inspect();
const isRunning = inspectData.State.Running;
if (!isRunning) await container.start();
const stream = await container.attach({ stream: true, stdin: true, stdout: true, stderr: true });
socket.emit('terminal-started');
stream.write('reset\n');
stream.on('data', chunk => {
socket.emit('terminal-output', chunk.toString('utf8'));
});
streams[id] = stream;
} catch(err) {}
};
exports.terminalInput = (data, id, socket) => {
const stream = streams[id];
stream.write(data);
};
В этом примере с клиента получаем через сокеты ввод пользователя и пишем его в терминал внутри докер контейнера.
Получается при перезагрузке сервера, все сохраненные стримы потеряются.