Здесь 2 связанных вопроса. Размещать их вместе имеет смысл.
Вопрос 1
У меня есть приложение node.js, которое отправляет событие всем клиентам, и все текущие клиенты будут отвечать ready
. Как я могу создать список всех клиентов, которые ответили на первоначальный выброс, и какую идентификацию можно использовать для различения клиентов?
Вопрос2:
После сбора списка подключенных клиентов я пытаюсь получить доступ к таблице базы данных MySQL с числом N
строк и назначить каждому клиенту X
строк. Эти строки будут отправлены обратно их соответствующим клиентам. Как это можно сделать?
Текущий код для Qn 1
Код узла
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);
Код JS на стороне клиента
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
});
});
});
Текущий код для Qn 2
Код работает для одного клиента, но как я могу перебрать все подключенные клиенты и выполнить одинаковое обновление столбца и выбор строк?
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
});
});
});