@Kneepy

Как удалять пользователя из комнаты если он перешёл в другую комнату?

Есть система комментариев. Когда пользователь заходит на страницу с постом то его автоматически присоединяет к комнате с именем равным этому самому значению. И всё бы ничего, но если я зайду на другой пост, то я останусь в комнате предыдущего поста и буду видеть только что отправленные сообщения от туда. Суть вопроса состоит в том что для меня непонятно как пользователю не добавляться в эту комнату, а переходить из предыдущей в новую. Ниже будет приведён код
того что есть на данный момент

Есть некоторая страница отправляющая событие connect-post-room с данными в виде номера поста и на backend'е я принимаю этот порядковый номер с создаю комнату с этим значением:
io.on('connection', (socket) => {
   socket.on('connect-post-room', pid => {
      const postRoom = `post:${pid}`
      socket.join(postRoom)
      socket.on('send-comment', comment => postService.addCommentSocket(comment, io, postRoom))
   })
})
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Выкидываем слово "переходить" так как оно означает только процесс, но никак не связан с изменением данных. Сначала необходимо покинуть текущую комнату (клиент отправляет запрос) и только после успешного покидания присоединяем с новой комнате (если очень надо то валидируем наличие пользователя в других комнатах)

Раумеется маппинг пользователь-комната должен где-то храниться на сервере
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы