[英]Efficient Socket.io distribution with Mongoose stream
我試圖創建一種高效的流node.js
應用程序,其中,服務器將連接到一個stream
中(加蓋集合) MongoDB
與mongoose
,然后直接排放流給客戶端的瀏覽器。
我擔心的是設計的可擴展性。 如果我錯了,請告訴我,但是現在看來,對於每個打開的新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.