1 Востаннє редагувалося Bygryn (26.11.2016 22:06:18)

Тема: Як рандом замінити на юзерів протилежної статі? (Random chat)

Доброго часу доби, почав по трохи розбиратись з 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 attachments

randomChat.rar 3.36 mb, 294 downloads since 2016-11-26 

Подякували: Chemist-i, 221VOLT2