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

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

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

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

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

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

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

5 ответов

7 просмотров

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

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

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

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

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

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

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

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

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

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

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

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
@ahndmn @ayaw0_0 здарова, на чем пишете?
Aiwan \ (•◡•) / _bot
7
Коллеги, как получить PId для собственного процесса из под линукса?
Роман Лях (rgreat)
6
Карта сайта