169 похожих чатов

Всем привет. Есть люди кто создавал чаты? Такой вопрос, как правильно и

лучше сделать отслеживание сообщений:

Есть многопользовательское ToDo приложение, с авторизацией, проектами у каждого пользователя, добавлением другого пользователя в проект, задачами в проектах и чатом внутри задач. Стэк: vue/express/mongo ну и сокеты. На данный момент все описанное выше работает, только есть загвоздка, не могу додумать как правильно отслеживать сообщения.

Работа приложения:
Пользователь авторизуется, на главной странице отображаются его проекты. На странице проекта отображаются таски, внутри каждого таска есть чат. В сторе есть массив, предназначеный для будущих сообщений. При клике на таск, я запрашиваю сообщения из этого чата, сокеты присылают мне сообщения и я могу прочитать что там есть и пообщаться, когда я перехожу в другой таск я затираю массив с сообщениями и перезаписываю новыми сообщениями присланными сокетами с бэка. И получается так что клиентская часть уже не знает о первом таске и сообщениях внутри - ничего. Что там происходит, кто там написал, сколько написали, а мне нужно отправлять пользователю уведомление о новом сообщении и на карточке с таском вывести количество не прочитанных сообщений.

Вопрос:
Как мне отслеживать это. Т.е. мне нужно создать массив массивов, в основном массиве будут храниться массивы с сообщениями каждого таска, будет ли это правильно? Или как это вообще делается? Я понимаю что я все эти сообщения я отслеживаю на бэке, но я не могу понять как правильно отправить на клиентскую часть уведомление. Желательно мне бы узнать как это на фронте реализовать и как на бэке это все отслеживать🙏

Если кто может помочь, скину ссылку на работающее сообщение.

5 ответов

12 просмотров

тебе нужен не массив массивов, а объект массивов, где ключ объекта - уникальный id чата, а значение - массив сообщений в этом чате

Artyom Tuchkov
тебе нужен не массив массивов, а объект массивов, ...

ну по идее, типа того, наверное и надо? Бек шлет через сокет событие, указывая ID чата, куда надо допушить новое сообщение. И ты с этим и работаешь

lucky-twixy Автор вопроса
Artyom Tuchkov
тебе нужен не массив массивов, а объект массивов, ...

Ага, понимаю. А не будет ли большой нагрузкой, если допустим будет по 50 - 100 тасков у одного пользователя и ну хотя бы по 100 ( последних ) сообщений из чата? 50 * 100 = Объект из 50 массивов в каждом по 100-200 сообщений.

lucky twixy
Ага, понимаю. А не будет ли большой нагрузкой, есл...

не думаю, что это будет критично можешь использовать не объект, а Map, у него производительность немного выше на больших объемах данных

lucky-twixy Автор вопроса
atogz
ну по идее, типа того, наверное и надо? Бек шлет ч...

Я вот просто думаю о том что это будет потом большая нагрузка на клиенте или норм?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта