Задать вопрос
@brezhitskiy42

Как в Node.js сохранять stream?

Как в 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);
};


В этом примере с клиента получаем через сокеты ввод пользователя и пишем его в терминал внутри докер контейнера.

Получается при перезагрузке сервера, все сохраненные стримы потеряются.
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Да, по тому что это просто сетевое соединение, ничего больше. Если потерялся контейнер то его в любом случае необходимо признавать мёртвым
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы