【问题标题】:Run multiple socket.io-clients in one node.js instance在一个 node.js 实例中运行多个 socket.io-clients
【发布时间】:2014-06-03 10:59:54
【问题描述】:

我想使用 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." });
});

【问题讨论】:

    标签: node.js


    【解决方案1】:

    你必须通过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();
    }
    

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

    【讨论】:

    • 就我的测试而言,socket.io 在命令行模式下重新连接时会生成一个新的套接字 ID。所以不,他们不是持久的
    • 嗯,我需要持久化的测试。但是当我在没有任何发射的情况下进行连接时,服务器显示已连接 1k 个套接字,如果它们不是 presistents 它应该下降到 0 而不发射呢?
    • 我想我误解了你。如果我错了,请纠正我。我的意思是它们不是持久的,因为当网络连接消失然后再次出现时,旧的套接字将被删除并创建新的套接字。但是如果网络正常,即使你没有向他们发射,他们仍然是连接的
    • 啊好吧!我只是认为“不持久”意味着他们在每次发射时都在握手。
    • 为了清楚一点:如果您担心的是 forceNew 并不会丢弃以前的连接。每次连接时它都会建立一个新连接,但如果它以某种方式断开连接,该连接将更改详细信息。所以旧的连接不会被删除,但这些连接都不是永久的。
    猜你喜欢
    • 2012-03-18
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2016-01-17
    • 2018-01-29
    • 2011-04-30
    相关资源
    最近更新 更多