以下是两个相关问题,同时发布更有意义。
问题1
我有一个node.js应用程序,它向所有客户端发出事件,所有当前客户端都会响应ready
。如何创建所有回复初始发射的客户端列表,以及可以用什么样的标识来区分客户端?
问题2:
在收集连接的客户端列表之后,我想做的是访问一个包含N
行数据的MySQL数据库表,并为每个客户端分配X
行数据。这些行将被发送回各自的客户端。如何实现?
问题1的当前代码
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);
客户端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
});
});
});
第二个问题的当前代码 该代码适用于单个客户端,但如何循环遍历所有连接的客户端并执行相同的列更新和行选择操作?
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
});
});
});