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

标签 node.js

我想使用 node.js、socket.io 和 socket.io-client 运行压力测试。

我想获取网络带宽、处理器/内存使用等

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

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

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

我的问题是:例如,我可以在一个 node.js 实例中运行 6 万个不同的 socket.io 客户端吗?

这是我的客户端代码:

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

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

关于node.js - 在一个 node.js 实例中运行多个 socket.io-clients,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24013444/

相关文章:

javascript - 如何使用node编写一个shell脚本来依次运行多个javascript文件?

javascript - 在 Nodejs 中以 GraphQL 类型分配 JSON

javascript - 如何从异步 Lambda 处理程序中的迭代器调用 DynamoDB

javascript - Java 和 Node.js 之间的通信 JSON

angularjs - 与 Electron 中的 Web 服务集成

node.js - 使用反向代理提供公共(public)文件

javascript - 用于匹配可打印 ASCII 符号的正则表达式?

javascript - 如何在 Javascript 中将缓冲区对象转换为图像?

html - 使用 Nodemailer 将表单输入中的数据发送到电子邮件

node.js - 通过用户身份验证防止中间人攻击(Node/Vue/Passport)