Erstellen Sie eine Liste der Verbundenen Clients über socket.io

Hier sind 2 Fragen. Buchen Sie zusammen, macht mehr Sinn.

Frage 1

Habe ich eine node.js app, die sendet ein Ereignis an alle clients und alle aktuellen Kunden reagieren mit einem ready emittieren. Wie kann ich erstellen Sie eine Liste aller clients, antwortete der erste emittieren, und welche Art von Kennzeichnung verwendet werden können, unterscheiden sich die Kunden?

Question2:

Was ich versuche zu tun, nach dem sammeln eine Liste der verbundenen clients, um dann den Zugriff auf eine MySQL-Datenbank-Tabelle N Anzahl der Zeilen und weisen Sie jeden client X Zeilen jeweils. Diese Zeilen ausgestoßen werden, zurück zu Ihren jeweiligen Kunden. Wie kann das getan werden?

Aktuellen Code für Qn 1

Knoten Code

setInterval(function() {
    util.log('Checking for new jobs...');
    dbCheckQueue(function(results) {  //checks if there are new rows to "distribute" to clients
        if (results.length) {
            util.log(results.length + ' new jobs found.');
            io.sockets.emit('job_available');
        }
    });
}, 10*1000);

Client-Seite JS-Code

socket.on('job_available', function() {
                console.log('Job Available.. Responding with Ready!');
                socket.emit('ready');
            });

io.sockets.on('connection', function(socket) {
    socket.on('ready', function() {
        //UPDATE N rows with client_id in column checkout.
        //Then SELECTS * from table where checkout = client_id
        getListings(client_id, function(listings) {
            socket.emit('job', listings);   //send jobs
        });
    });
});

Aktuellen Code für Qn 2
Der code funktioniert für einen einzelnen client, aber wie mache ich eine Schleife durch alle angeschlossenen clients, und führen Sie die gleiche Aktualisierung der Spalte und die Auswahl der Zeilen?

io.sockets.on('connection', function(socket) {
    socket.on('ready', function() {
        //UPDATE N rows with client_id in column checkout.
        //Then SELECTS * from table where checkout = client_id
        getListings(client_id, function(listings) {
            socket.emit('job', listings);   //send jobs
        });
    });
});
InformationsquelleAutor Nyxynyx | 2011-11-27
Schreibe einen Kommentar