여기에는 2 개의 관련 질문이 있습니다. 그들을 함께 게시하는 것이 더 합리적입니다. 1socket.io를 사용하여 연결된 클라이언트 목록을 만듭니다.
상담자는 모든 클라이언트에서 이벤트를 방출하는 Node.js를 응용 프로그램을 가지고 있고, 현재의 모든 클라이언트는 ready
개의 발광으로 응답합니다. 초기 발광에 응답 한 모든 클라이언트의 목록을 만들려면 어떻게해야하며 클라이언트를 구별하기 위해 어떤 종류의 ID를 사용할 수 있습니까?
Question2 : 내가 연결된 클라이언트 목록을 한 후 이렇게 수집하기 위해 노력하고 무엇
, 다음 행 N
수의 MySQL 데이터베이스 테이블에 액세스하고 각 클라이언트에게 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
});
});
});
당신은 getISPLING() 함수의 논리를 입증 할 수 있습니까? 처음으로 로그인 한 사용자. – johannesMatevosyan
'getListings' 호출은 원래 질문에서 가져온 샘플 코드 일뿐입니다. 내가 무엇을 포함하고 어떻게 구현되는지 전혀 모른다. – rossipedia
배열에 클라이언트를 저장하고 있기 때문에'foreach' 또는'for' 루프의 hepl로 검색하려고 할 때 브라우저에 처음 로그인 한 클라이언트의 사용자 이름 만 있습니다. – johannesMatevosyan