socket io真的很重

时间:2016-01-01 23:22:31

标签: node.js socket.io

我的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);
  };
})();

请告知我如何解决负荷问题,我们非常感谢任何技术或策略!

0 个答案:

没有答案