簡體   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