2015-08-24 2 views
5

У меня есть небольшой webapp, построенный на node.js, express и socket.io. В том, что я использую два пространства имен создает так:socket.io-limit количество максимальных подключений на каждое пространство имен

lists = io.of('/lists'), 
views = io.of('/view'), 

То, что я хотел бы сделать, чтобы ограничить число соединений в /views пространстве имен. Есть ли способ сделать это с помощью socket.io? Я взглянул на документы, но найти там нечего.

Любые идеи, как это сделать?

Спасибо заранее!

ответ

3

Вы можете сделать простой счетчик (при необходимости - расширить класс):

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 **/ 
    } 
}); 

UPD: Если вы хотите, чтобы клиент продолжать попытки соединиться с сервером, использование:

socket.conn.close(); 

Вместо:

socket.disconnect(); 
+0

хорошая идея, собирается проверить это, но выглядит идти спосо! – philipp

+0

@philipp Считается, что необходимо не проверять равное максимальному количеству подключений, но больше или равно случаю параллельных подключений. Я меняю свой ответ. –

+0

прохладный, это работает! – philipp

Смежные вопросы