Доброго часу доби, почав по трохи розбиратись з socket.IO і Node.js на прикладі анонімного "random one to one" чату. Зараз з'єднання користувачів здійснюється рандомно, як можна переробити, щоб з'єднання здійснювлось в залежності від статі користувача. Щоб з'єднувало хлопців з дівчатами та навпаки? Прикріпив архів з чатом та ось кусок коду, що відповідає за з'єднання, додавання та видалення користувачів:
▼Прихований текст
function userHandler(){
var userAvailable = [];
var self = this;
// storing available users
this.addUser = function(id){
self.removeSelf(id); //remove same user if already exist
userAvailable.push(id);
};
// remove partner from queue
var removePartner = function(id){
userAvailable.splice(id,1);
};
// remove self from queue
this.removeSelf = function(id){
for(key in userAvailable){
if(userAvailable[key] === id)
userAvailable.splice(key,1);
}
};
// Selecting random partner
var selectPartner = function(socketId, fn){
var queue = userAvailable;
if (queue.length > 1){
var key = Math.round(Math.random() * (queue.length - 1));
if(queue[key] == socketId){
return selectPartner(socketId,fn);
} else {
fn(queue[key],key);
}
}
};
this.makeChat = function(socketId,fn){
selectPartner(socketId, function(partner,pid){
removePartner(pid);
self.removeSelf(socketId);
fn(partner);
});
};
}
module.exports = new userHandler;
Було б чудово, якби хтось міг би запропонувати свою реалізацію або підкаже, як реалізувати це
Post's attachmentsrandomChat.rar 3.36 mb, 294 downloads since 2016-11-26