Я сам изучал потоки mongodb, хотя у меня нет полного ответа, который вы ищете, у меня есть его часть.Вы можете настроить поток socket.io
, используя javascript socket.io и socket.io-streaming, доступные в NPM, также mongodb для базы данных, поскольку использование 40-летней базы данных, в которой есть проблемы, является неправильным, времямодернизировать также 40-летнюю базу данных - это SQL, и, насколько мне известно, SQL не делает потоков
Так что, хотя вы спрашивали только о данных, передаваемых с сервера на клиент, я также хочу получить ответ от клиента к серверу, потому чтоЯ НИКОГДА не могу найти его где-нибудь, когда я ищу, и я хотел настроить одно место с элементами отправки и получения через поток, чтобы каждый мог быстро освоить его.
клиентская сторона отправляет данные на сервер посредством потоковой передачи
stream = ss.createStream();
blobstream=ss.createBlobReadStream(data);
blobstream.pipe(stream);
ss(socket).emit('data.stream',stream,{},function(err,successful_db_insert_id){
//if you get back the id it went into the db and everything worked
});
сервер получает поток от клиентской стороны и затем отвечает, когда это сделано
ss(socket).on('data.stream.out',function(stream,o,c){
buffer=[];
stream.on('data',function(chunk){buffer.push(chunk);});
stream.on('end',function(){
buffer=Buffer.concat(buffer);
db.insert(buffer,function(err,res){
res=insertedId[0];
c(null,res);
});
});
});
// Это другая половина этой выборки данных и потоковой передачи на клиент
клиентская сторона запрашивает и получает потоковые данные с сервера
stream=ss.createStream();
binarystring='';
stream.on('data',function(chunk){
for(var I=0;i<chunk.length;i++){
binarystring+=String.fromCharCode(chunk[i]);
}
});
stream.on('end',function(){ data=window.btoa(binarystring); c(null,data); });
ss(socket).emit('data.stream.get,stream,o,c);
серверная сторона отвечает на запроспотоковые данные
ss(socket).on('data.stream.get',function(stream,o,c){
stream.on('end',function(){
c(null,true);
});
db.find().stream().pipe(stream);
});
Самый последний из них - единственный, где я как бы просто вытаскиваю его из задницы, потому что я еще не пробовал, но это должно сработать.На самом деле я делаю что-то подобное, но я записываю файл на жесткий диск, а затем использую fs.createReadStream для потоковой передачи его клиенту.Так что не уверен, что на 100%, но из того, что я прочитал, должно быть, я перезвоню вам, как только протестирую.
Ps, кто-нибудь захочет меня расспросить о моем разговорном способе говорить, я канадеци я люблю говорить "эх", подойди ко мне со своими объятиями и ударишь по братанам / сестренкам: D