Berikut 2 pertanyaan terkait. Mempostingnya bersama lebih masuk akal.
pertanyaan 1
Saya memiliki aplikasi node.js yang memancarkan acara ke semua klien, dan semua klien saat ini akan merespons dengan ready
memancarkan. Bagaimana saya bisa membuat daftar semua klien yang menjawab emit awal, dan identifikasi seperti apa yang dapat digunakan untuk membedakan klien?
Question2:
Apa yang saya coba lakukan setelah mengumpulkan daftar klien yang terhubung, adalah untuk kemudian mengakses tabel database MySQL N
jumlah baris dan menetapkan setiap klien X
baris masing-masing. Baris-baris ini akan dipancarkan kembali ke klien masing-masing. Bagaimana ini bisa dilakukan?
Kode Saat Ini untuk Qn 1
Kode Node
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);
Kode JS Sisi Klien
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
});
});
});
Kode Saat Ini untuk Qn 2 Kode ini berfungsi untuk satu klien, tetapi bagaimana cara mengulang melalui semua klien yang terhubung dan melakukan pembaruan kolom dan memilih baris yang sama?
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
});
});
});