जेएस एसिंक्स को नेविगेट करने के लिए, मैंने सॉकेट.आईओ के साथ उत्सर्जन करने के लिए कुछ किया और यह काम किया
सर्वर साइड पर
var query = records.find({$or:[{starter:data},{receiver:data}]},{});//check the records table for all persons the logged in user has spoken to
query.sort('-createDate').exec(function (err, docs){
if(err) throw err;
for(var i=docs.length-1; i>= 0; i--)
{
var starter = docs[i].starter;
var receiver = docs[i].receiver;
var lasttxt = docs[i].lastMessage;
if (starter == socket.usernames){
var target = receiver;
}else
{
var target = starter;
}
var userlast = target+" "+lasttxt;
socket.emit('lastly', userlast);//Emit the username and last message for the client to emit back here
}
})
अपने क्लाइंट की ओर से, उत्सर्जित डेटा चुनें
socket.on('lastly', function(data){//Recieve the data and send right back
socket.emit('lastly2', data);
});
सर्वर साइड पर वापस, वापस भेजे गए डेटा को उठाएं
socket.on('lastly2', function(data){//receive the username and last message to work with
var check = data;
var space = check.indexOf(' ');
var name = check.substr(0, space);
var msg = check.substr(space+1);
usersrec.find({username:name},{}).lean().exec(function (errx, docx){
if(errx) throw errx;
docx[0].message = msg;
socket.emit('usernames', docx);
});
हाँ यह शायद अपरंपरागत है, लेकिन कम से कम यह काम पूरा हो जाता है। मैं बेहतर सुझाव के लिए तैयार हूं