Dưới đây là 2 câu hỏi liên quan. Đăng chúng lại với nhau có ý nghĩa hơn.Tạo danh sách Khách hàng được kết nối bằng socket.io
Câu hỏi 1
Tôi có một ứng dụng Node.js mà phát ra một sự kiện ra cho tất cả các khách hàng, và tất cả các khách hàng hiện tại sẽ phản ứng với một Emit ready
. Làm thế nào tôi có thể tạo danh sách tất cả các khách hàng đã trả lời phát ban đầu tiên và loại nhận dạng nào có thể được sử dụng để phân biệt khách hàng?
question2:
Những gì tôi đang cố gắng để làm sau khi thu thập một danh sách khách hàng được kết nối, là để sau đó truy cập vào một bảng cơ sở dữ liệu MySQL của N
số hàng và gán cho mỗi khách hàng X
hàng mỗi. Những hàng này sẽ được phát lại cho khách hàng tương ứng. Điều này có thể giải quyết như thế nào?
Mã hiện tại cho Qn 1
Node Mã
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-side JS Mã
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
});
});
});
Mã hiện tại cho Qn 2 Mã hoạt động cho một máy khách, nhưng làm cách nào để lặp qua tất cả các máy khách được kết nối và thực hiện cập nhật cùng một cột và chọn các hàng?
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
});
});
});
bạn có thể đặt trước logic của hàm getListings(), vì tôi áp dụng giải pháp quen thuộc nhưng tôi thấy trên màn hình trên tên của một người dùng đã đăng nhập đầu tiên. – johannesMatevosyan
Lệnh gọi 'getListings' chỉ là mã mẫu mà tôi đã lấy từ câu hỏi gốc. Tôi không biết nó chứa cái gì hay nó được triển khai như thế nào. – rossipedia
Tôi thấy, bởi vì tôi đang lưu trữ các máy khách trong mảng và khi tôi cố gắng truy xuất chúng với các vòng của 'foreach' hoặc' for', tôi chỉ là tên người dùng đã đăng nhập đầu tiên trong trình duyệt. – johannesMatevosyan