yarkovaleksei
@yarkovaleksei
Это твинк. Основной акк: @yarkov (в бане)

Как грамотно спроектировать бэкенд часть API сервера, с использованием web sockets?

Всем здравствуйте. Друзья! Подскажите годных туториалов или дайте совет.

Делается SPA. Фронтенд - Vue.js, бэкенд - express + swagger. Тематика будет что-то подобное тостеру. Хочу добавить максимальный реалтайм "из коробки".

Возьмем, например, ленту. Как грамотно реализовать подгрузку ленты по websocket, с учетом подписанных юзеров?

То есть на сервере добавляем вопрос в MongoDB и делаем socket.emit('new-question', questionData);
Но ведь надо еще отфильтровать клиентов по интересам? Вот тут у меня затык полнейший.

Была такая идея: подгрузить список тегов, на которые подписан юзер и кэшировать на клиенте. А при получении данных с сервера проверять теги нового вопроса и уже на клиенте решать - отрисовывать или нет.

Я правильно подхожу к решению или опять велосипед из костылей мучу?
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 1
evgeniy2194
@evgeniy2194
PHP, js developer
forEach(sockets, function (socket)){
    if(socket.user.questionCategoryId === questionData.categoryId) {
         socket.emit('new-question', questionData);      
    }
}

sockets - массив подключенных сокетов. В переменной socket.user можно хранить пользователя с базы. Перебираете всех пользователей и смотрите, кому нужно отправлять вопрос, а кому нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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