Mee*_*sam 5 push push-notification express socket.io
我正在使用express.js和socket.io一起用于实时推送通知系统.哪些工作正常,我分享我在服务器端使用的一些代码行
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(appconfig.webPort, function() {
console.log('server runing at ' + appconfig.webPort);
});
io.on('connection', function(socket) {
var id = setInterval(function() {
some database logic here to get data from database
socket.emit(data);
}, 5000);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是这个代码是否会增加服务器上的负载?因为我每隔几秒就从数据库中获取数据.如果它是有害的,做同样的最好的方法是什么.
我的问题是这段代码会增加服务器的负载吗?当我每隔几秒钟从数据库获取数据时。如果它有害,那么最好的方法是什么?
当然,它确实增加了负载。对于与服务器建立的每个 socket.io 连接,您都会启动一个单独的 5 秒间隔计时器,并且每次该计时器触发时,您都会运行一个或多个数据库查询,然后将这些结果发送到该客户端。
如果您有 50 个连接的客户端,您将每 100 毫秒 (5000 / 50) 运行一次这些查询。如果您有 1000 个连接的客户端,则平均间隔为每 5 毫秒。除了让您的数据库非常繁忙之外,您的服务器也会非常繁忙。如果您有数千个连接的客户端,那么扩展会迅速变得更糟。
如果您为每个客户获取相同的数据,那么您应该改变这样做的方式。每 5 秒对数据库进行一次查询,然后将相同的结果发送给所有客户端。这样的规模要好得多。
如果您可以完全避免轮询数据库并依靠某种事件触发器来检测更改,那么通常效果会更好。
归档时间: |
|
查看次数: |
3710 次 |
最近记录: |