2015-08-24 10 views
5

Ich habe ein kleines Webapp auf node.js, Express und socket.io gebaut. Innerhalb dass ich bin mit zwei Namensräume erzeugt wie folgt aus:socket.io-Beschränkung der Anzahl der maximalen Verbindungen pro Namespace

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

Was Ich mag würde tun, ist die Anzahl der Verbindungen im /views Namensraum zu beschränken. Gibt es eine Möglichkeit, das mit socket.io zu machen? Ich habe mir die Dokumente angesehen, aber dort war nichts zu finden.

Irgendwelche Ideen, wie man das macht?

Danke im Voraus!

Antwort

3

Sie können einen einfachen Zähler machen (wenn nötig - die Klasse zu erweitern):

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: Wenn der Client wollen weiterhin zu versuchen, auf den Server, den Einsatz zu verbinden:

socket.conn.close(); 

Statt:

socket.disconnect(); 
+0

gute Idee, werde es überprüfen, sieht aber gehen od! – philipp

+0

@philipp Es wird angenommen, dass es nicht notwendig ist, die maximale Anzahl der Verbindungen zu überprüfen, sondern die Anzahl der gleichzeitigen Verbindungen. Ich ändere meine Antwort. –

+0

cool, das funktioniert! – philipp

Verwandte Themen