【发布时间】:2016-10-28 23:43:22
【问题描述】:
我正在尝试创建一个高效的流式node.js 应用程序,其中服务器将使用mongoose 连接到MongoDB 中的stream(封顶集合),然后将流直接发送到客户端浏览器.
我担心的是我的设计的可扩展性。如果我错了,请告诉我,但似乎现在,对于打开的每个新 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
});
【问题讨论】:
标签: node.js mongodb socket.io stream