我的nodejs服务器由于某种原因负载很重,所有我正在运行的是一个使用socket io的小应用程序。这个应用程序主要从html页面上的textarea获取文本,并将其更新为" room"中的人员。有点像在线聊天。然而,如果有人输入内容,如果每个房间有2个客户端会导致延迟峰值,那么这会对我的服务器造成巨大的负担。
服务器端代码
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(process.env.PORT);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.on('connection', function (socket) {
socket.on('join_room',function(room){
socket.join(room);
socket.in(room).emit('joined_room', 'true');
});
socket.on('blob', function (room) {
socket.in(room.name).emit('new_text', room.update_text);
});
socket.on('blob-typing',function(room){
socket.in(room.name).emit('some_typing', {cur_loc:room.cursor_location});
});
});
客户端代码
var socket = io.connect('x');
socket.emit('join_room',url_key);
setInterval(function(){
if (field_change === true) {
var post_data = {
name: url_key,
update_text: $('.blob').val()
};
socket.emit('blob', post_data);
post_data = {
name: url_key,
cursor_location:0
};
socket.emit('blob-typing', post_data);
}
field_change = false;
},1000);
$(".blob").on('keyup paste input',function () {
delay(function(){
field_change = true;
},500);
});
socket.on('joined_room',function(data){
});
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
请告知我如何解决负荷问题,我们非常感谢任何技术或策略!