繁体   English   中英

带有Mongoose流的高效Socket.io分发

[英]Efficient Socket.io distribution with Mongoose stream

我试图创建一种高效的流node.js应用程序,其中,服务器将连接到一个stream中(加盖集合) MongoDBmongoose ,然后直接排放流给客户端的浏览器。

我担心的是设计的可扩展性。 如果我错了,请告诉我,但是现在看来,对于每个打开的新Web浏览器,也将打开与MongoDB的新连接(它将不重新使用以前使用的连接),因此如果我同时连接了许多用户,效率将会很低下。 我该如何改善呢?

我正在考虑一台服务器-socket.io中的多客户端设计,但是我不知道如何实现。

代码如下:

服务器端(app.js)

io.on('connection', function (socket) {
  console.log("connected!");
  var stream = Json.find().lean().tailable({ "awaitdata": true, numberOfRetries: Number.MAX_VALUE}).stream();
  stream.on('data', function(doc){
    socket.emit('rmc', doc);
  }).on('error', function (error){
    console.log(error);
  }).on('close', function () {
    console.log('closed');
  });
});

客户端(index.html)

socket.on('rmc', function(json) {
  doSomething(); // it just displays the data on the screen
});

不幸的是,这不仅仅取决于mongo的性能。 除非您具有较高的并发级别(+1000个流),否则您暂时不必担心mongo。

因为使用这种应用程序您会遇到更大的问题,例如:数据类型和压缩,缓冲区溢出,带宽限制,socket.io限制,os限制。 这些是您最有可能首先要面对的问题。

现在回答您的问题。 据我所知,您没有按用户打开与mongo的连接。 用户连接到应用程序而不是数据库。 该应用程序已与数据库连接。

最后,这些链接将帮助您了解和调整对此类工作的查询(流式处理)

https://github.com/Automattic/mongoose/issues/1248

https://codeandcodes.com/tag/mongoose-vs-mongodb-native/

http://drewww.github.io/socket.io-benchmarking/

希望能帮助到你 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM