首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个node.js实例中运行多个Socket.IO客户端

在一个node.js实例中运行多个Socket.IO客户端
EN

Stack Overflow用户
提问于 2014-06-03 18:59:55
回答 1查看 14.3K关注 0票数 7

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

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

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

现在,我想在其他amazon服务器上运行多个Socket.IO客户端,并将它们连接到我的服务器。

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

我的问题是:例如,我可以在一个node.js实例中运行60k个不同的Socket.IO客户端吗?

这是我的客户端代码:

代码语言:javascript
复制
var socket = require('socket.io-client')('http://someAddress:3000');
  socket.on('connect', function(){      
  socket.on('news', function(data){ 
});
socket.emit('event', { data: "Connection test." });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-03 19:40:14

您必须传递forceNew选项:

代码语言:javascript
复制
var socket = require('socket.io-client')('http://someAddress:3000', {
  forceNew: true
});

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

下面是一个完整的测试示例:

server.js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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();
}

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24013444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档