лучше сделать отслеживание сообщений:
Есть многопользовательское ToDo приложение, с авторизацией, проектами у каждого пользователя, добавлением другого пользователя в проект, задачами в проектах и чатом внутри задач. Стэк: vue/express/mongo ну и сокеты. На данный момент все описанное выше работает, только есть загвоздка, не могу додумать как правильно отслеживать сообщения.
Работа приложения:
Пользователь авторизуется, на главной странице отображаются его проекты. На странице проекта отображаются таски, внутри каждого таска есть чат. В сторе есть массив, предназначеный для будущих сообщений. При клике на таск, я запрашиваю сообщения из этого чата, сокеты присылают мне сообщения и я могу прочитать что там есть и пообщаться, когда я перехожу в другой таск я затираю массив с сообщениями и перезаписываю новыми сообщениями присланными сокетами с бэка. И получается так что клиентская часть уже не знает о первом таске и сообщениях внутри - ничего. Что там происходит, кто там написал, сколько написали, а мне нужно отправлять пользователю уведомление о новом сообщении и на карточке с таском вывести количество не прочитанных сообщений.
Вопрос:
Как мне отслеживать это. Т.е. мне нужно создать массив массивов, в основном массиве будут храниться массивы с сообщениями каждого таска, будет ли это правильно? Или как это вообще делается? Я понимаю что я все эти сообщения я отслеживаю на бэке, но я не могу понять как правильно отправить на клиентскую часть уведомление. Желательно мне бы узнать как это на фронте реализовать и как на бэке это все отслеживать🙏
Если кто может помочь, скину ссылку на работающее сообщение.
тебе нужен не массив массивов, а объект массивов, где ключ объекта - уникальный id чата, а значение - массив сообщений в этом чате
ну по идее, типа того, наверное и надо? Бек шлет через сокет событие, указывая ID чата, куда надо допушить новое сообщение. И ты с этим и работаешь
Ага, понимаю. А не будет ли большой нагрузкой, если допустим будет по 50 - 100 тасков у одного пользователя и ну хотя бы по 100 ( последних ) сообщений из чата? 50 * 100 = Объект из 50 массивов в каждом по 100-200 сообщений.
не думаю, что это будет критично можешь использовать не объект, а Map, у него производительность немного выше на больших объемах данных
Я вот просто думаю о том что это будет потом большая нагрузка на клиенте или норм?
Обсуждают сегодня