2015-08-24 3 views
5

Ho una piccola webapp costruita su node.js, express e socket.io. All'interno di questo, sto usando due spazi dei nomi crea così:socket.io-restrict numero di connessioni massime per spazio dei nomi

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

Quello che vorrei fare, è quello di limitare il numero di connessioni nel /views namespace. C'è un modo per farlo con socket.io? Ho dato un'occhiata ai documenti, ma non c'era niente da trovare lì.

Qualsiasi idea su come farlo?

Grazie in anticipo!

risposta

3

È possibile effettuare una semplice contatore (se necessario - di estendere la classe):

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: Se si desidera che il client di continuare a tentare di connettersi al server, utilizzare:

socket.conn.close(); 

Invece:

socket.disconnect(); 
+0

buona idea, andando controllare, ma sembra andare od! – philipp

+0

@philipp Si pensa che sia necessario non controllare uguale al numero massimo di connessioni, ma maggiore o uguale al caso di connessioni concorrenti. Cambio la mia risposta –

+0

cool, funziona! – philipp