чаты с использованием Socket.io, да еще и на nodejs.
Реализовал так:
БД:
chats:
- id
chat_user:
- user_id
- chat_id
chat_message:
- chat_id
- user_id
- text
Алгоритм:
1. Пользователь подключается передавая token. На основании токена ищу в бд пользователя и складываю его socket.user = user;
2. Ищу все существующие чаты пользователя и присоединяю его в эти "комнаты"
chats.forEach((chat,i,a) => {
socket.join(chat.id);
});
3. Жду событие "новое сообщение", проверяю принадлежность иницииатора сообщения к чату и пишу в бд-транслирую в комнату.
Казалось бы все ок, но как организовать динамичное присоединение пользователя к ново-созданному чату-комнате?
Т.е другой юзер вызывает событие createChat, я создаю новый чат с этими двумя пользователями, могу подписать иницииатора прям сразу-же, а вот как подписать второго пользователя?
Хранить у себя массив подключенных пользователей, искать его там, и по socketId присоединять?
Там есть Броадкаст
Обсуждают сегодня