Сериализовать node.js объект stream (который является циклическим) для обхода в формате JSON

#node.js

#node.js

Вопрос:

Мне нужно сериализовать объект stream, который является обратным вызовом из net.createServer()

 var server = net.createServer(function (stream) {

  var json = JSON.stringify(stream);
  

Однако, когда я делаю это, я получаю ошибку типа, потому что объект stream содержит циклические атрибуты.

Есть ли обходной путь для этого?

Комментарии:

1. Почему вы хотите сериализовать поток. Вы не можете просто передать поток чему-то другому.

2. Сервер является асинхронным, вам необходимо обработать событие ‘data’. Ознакомьтесь с документацией stream в node.js api.

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

Ответ №1:

@Jason здесь прав. Вы хотите взять данные из потока, а не сам поток, и поместить их в Redis. Чтобы сделать это, вы должны добавить прослушиватели событий в поток для событий data и end . В обработчиках событий вы будете получать фрагмент данных при каждом обратном вызове, который вы можете либо записывать в redis по частям, либо собирать их в памяти, а затем записывать все целиком, когда происходит end обратный вызов. Вот пример, которому вы можете последовать.