socket.io-restrict每个命名空间的最大连接数

phi*_*ipp 6 javascript node.js express socket.io

我在node.js,express和socket.io上构建了一个小的webapp.在其中,我使用两个名称空间创建:

lists = io.of('/lists'),
views = io.of('/view'),
Run Code Online (Sandbox Code Playgroud)

我想做的是限制/views命名空间中的连接数.用socket.io有什么办法吗?我看过文档,但那里找不到任何东西.

任何想法如何做到这一点?

提前谢谢!

std*_*b-- 4

您可以制作一个简单的计数器(如有必要 - 扩展该类):

var lists = io.of('/lists');
lists.max_connections = 10;
lists.current_connections = 0;

lists.on('connection', function(socket){
  if (this.current_connections >= this.max_connections) {
    socket.emit('disconnect', 'I\'m sorry, too many connections');
    socket.disconnect();
  } else {
    this.current_connections++;
    socket.on('disconnect', function () {
      this.current_connections--;   
    });
    /** something useful **/ 
  }
});
Run Code Online (Sandbox Code Playgroud)

更新:如果您希望客户端继续尝试连接到服务器,请使用:

socket.conn.close();
Run Code Online (Sandbox Code Playgroud)

反而:

socket.disconnect();
Run Code Online (Sandbox Code Playgroud)