Необходимо прилепить простой чат к проекту, для этого была выбрана нода.
Когда-то давно ее колупал, но все подзабыл. В общем есть ряд вопросов по авторизации.
Когда пользователь заходит на страницу чата, я отправляю специальный токен и идентификатор (interlocutor_id) собеседника на сервер node.js:
socket.on('connect', function () {
socket.emit('add user', 'hash', 'interlocutor_id');
});
Далее в мое логике есть вот такое дело:
/**
* Добавляем пользователя в комнату
* @var hash - на основе которого необходимо проверить текущего пользователя
* @var interlocutor_id - идентификатор собеседника
*/
socket.on('add user', function (hash, interlocutor_id) {
//TODO: Узнаем user_id по hash и проверяем может ли пользователь общаться в чате
//TODO: Проверяем общий список, ожидает ли кто-то общения с user_id
//TODO: Если кто-то ожадает общения с user_id записываем user_id в общий список и добавляем в нужную комнату
//TODO: Если никто не ожидает общения с user_id, создаем для него комнату и вносим в общий список
// socket.join(room);
console.log (hash);
});
Сам вопрос заключается в том, как разделять пользователей по комнатам, таким образом, чтобы сообщения не пересекались.
Я думаю держать вот такой объект:rooms = [
{
name: 'fds5e6f7y89sgufdgifdg5430fd',
users : [
{
soket: '1'
},
{
soket: 'interlocutor_id'
}
]
},
{
name: 'fdsjio87f6f7d68s7f6sdfdsf7d',
users : [
{
soket: '1'
},
{
soket: 'interlocutor_id'
}
]
}
];
Смысл следующий:
Я захожу в чат, чат получает данные (мой хэш и идентификатор собеседника). Далее node.js проверяет хэш, тоесть идет в базу данных смотрит, что по чем,и при хорошем раскладе получает данные текущего пользователя.
Далее я иду в свой объект и начинаю его перерывать, в надежде найти комнату, где есть 1 пользователь с подходящим interlocutor_id, если пользователь найден (тоесть меня кто-то уже ждет), я получаю название комнаты и отправляю сообщения уже. Если пользователь не найден, то я генерирую случайное название комнаты и дописываю это дело в объект.
Собственно поделитесь пожалуйста опытом и прокомментируйте подход?