在一个node.js实例中运行多个socket.io-clients

前端之家收集整理的这篇文章主要介绍了在一个node.js实例中运行多个socket.io-clients前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用node.js,socket.io和socket.io-client运行压力测试.

我想获得网络带宽,处理器/内存使用等.

我在亚马逊上有一个node.js socket.io服务器,大小为XLARGE.

现在我想在其他亚马逊服务器上运行多个socket.io-clients,并将它们连接到我的服务器.

我在不同的进程中运行它,但是一个node.js进程占用15MB内存.我想同时测试100k socket.io连接,所以这不是一个选项.

我的问题是:我可以在一个node.js实例中运行60k个不同的socket.io-clients吗?

这是我的客户端代码

var socket = require('socket.io-client')('http://someAddress:3000');
  socket.on('connect',function(){      
  socket.on('news',function(data){ 
});
socket.emit('event',{ data: "Connection test." });
});

解决方法

你必须传递forceNew选项:
var socket = require('socket.io-client')('http://someAddress:3000',{
  forceNew: true
});

然后在循环中初始化套接字.

这是一个完整的测试示例:

server.js:

var io = require('socket.io')();
io.on('connection',function(socket){
  var i = 0;
  setInterval(function() {
    socket.emit('news',{
      message: i++
    });
  },1000);
});
io.listen(3000);

客户端,JS:

function testOne() {
  var socket = require('socket.io-client')('http://127.0.0.1:3000',{forceNew: true});
  socket.on('connect',function(){
    socket.on('news',function(data){
      console.log(data.message);
    });
  });
}

for (var i = 0; i < 5; i++) {
  testOne();
}

出于测试目的,我让客户端每秒输出递增数五次.

原文链接:https://www.f2er.com/nodejs/241289.html

猜你在找的Node.js相关文章