2015-08-24 7 views
5

Mam małą aplikację webową zbudowaną na node.js, express i socket.io. Wewnątrz, że używam dwóch nazw tworzy tak:socket.io-limit liczby maksymalnych połączeń w przestrzeni nazw

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

Co chciałbym zrobić, to ograniczyć liczbę połączeń w obszarze nazw /views. Czy jest jakiś sposób, aby to zrobić z socket.io? Spojrzałem na dokumenty, ale nie było tam nic do znalezienia.

Jakieś pomysły, jak to zrobić?

Dzięki!

Odpowiedz

3

Można zrobić prosty licznik (jeśli to konieczne - aby rozszerzyć klasę):

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: Jeśli chcesz klient nadal próbować połączyć się z serwerem, użytkowania:

socket.conn.close(); 

Zamiast:

socket.disconnect(); 
+0

dobry pomysł, Sprawdzę to, ale wygląda iść od! – philipp

+0

@philipp Uważa się, że konieczne jest, aby nie sprawdzać równej maksymalnej liczbie połączeń, ale większej lub równej przypadkowi współbieżnych połączeń. Zmieniam moją odpowiedź. –

+0

fajne, to działa! – philipp