|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||||||||||||||||||||||||
Поместить переписку в БД14.11.2019, 12:48. Показов 4329. Ответов 28
Здрасте всем, дела обстоят так, сделал и настроил переписку между пользователями, но все это в режиме реального времени, т.е. без участия базы данных, в целом на проект можете посмотреть тут: Сервер Фронтенд
Далее хочу сделать чтобы это работало так - пользователи переписываются, один отключается, второй продолжает писать, и когда первый вошел сново в сеть, он мог открыть чат и увидеть написанное ранее и всю переписку в целом. Не могу разобрать устройство таблицы в бд и как доставать оттуда нужную переписку... Буду рад любой помощи. Теперь пробежим по коду: Серверная часть: Сам ХАБ:
ну и контекст БД:
0
|
||||||||||||||||||||||||||
| 14.11.2019, 12:48 | |
|
Ответы с готовыми решениями:
28
Загрузка изображений в переписку ВК Показываем переписку тикета Хочу восстановить переписку в контакте |
|
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
|
|
| 14.11.2019, 12:53 | |
|
Lucky64, предлагаю организовать бд по типу чата, то есть ид,таймштамп,никнейм,сообщение
ну и при подключении доставать только то что нужно для текущего отображения, при прокрутке, доставать больше если вопрос в прочитанности юзером сообщений то нужна ещё бд юзеров по типу ид,никнейм,таймштамп и беря от туда таймштамп тянуть из первой таблы записи можно ещё хитрым способом в первую таблу писать дисконект юзера и тянуть данные после него
0
|
|
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
|||||||||||||||||||||||||||
| 15.11.2019, 09:51 [ТС] | |||||||||||||||||||||||||||
![]() Добавлено через 3 минуты User-ganz, плюс у нас уже есть таблица друзей, вот думаю может добавить туда список сообщений между этими друзьями, что то типа - List <string> Messages и потом пополнять, либо создать модель сообщения... крч пока разобрался с сигналР, ткая каша в голове ![]() Добавлено через 4 часа 2 минуты User-ganz, собрал из г..на и палок вот такое ... даже не знаю как назвать... На сервере: Модель
что скажете?
0
|
|||||||||||||||||||||||||||
|
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
|
|
| 16.11.2019, 12:01 | |
|
Lucky64, в таком случае просто добавляем к таблице с сообщениями ещё один столбец с идшками\именами адресатов, и делаем выборку по LIKE но не забываем о похожести те о необходимости разделителя тк лайк 1 выберет и 111 но не лайк ' 1 '
0
|
|
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||||||||||||||||||||
| 17.11.2019, 10:50 [ТС] | ||||||||||||||||||||||
Добавлено через 8 минут И еще такой вопрос, если вы заметили то таблица сообщений никак не связана с юзерами, т.е. у нее есть все айдишники итп, но всю связь я делаю вручную через Метод добавления сообщений в бд:
0
|
||||||||||||||||||||||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
|
| 17.11.2019, 11:00 | |
|
Lucky64, а я бы немного изменил модель данных. Ввёл бы сущность "Адресат" и из сущности "Message" ссылался бы на неё. "Адресат" бы содержал коллекцию пользователей. Так, если в этой коллекции один пользователь - сообщение приватное, если несколько - то сообщение групповое. Таким образом чатик начнёт поддерживать комнаты \ группы как во всяких телеграммах\ватсапах\слаках и прочих подобных штуках.
Добавлено через 5 минут И вообще, не смотря на то, что я ангуляр очень люблю и уважаю, с выходом .NET Core 3 стоит попробовать использовать Blazor Server Side. Тогда у вас и фронт-энд будет на C#. Круто же.
1
|
|
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||
| 17.11.2019, 12:32 [ТС] | ||
0
|
||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
|||||||
| 18.11.2019, 07:21 | |||||||
1
|
|||||||
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
|
| 18.11.2019, 11:09 [ТС] | |
|
Usaga, так, исправлю способ доставания, плс подскажите где еще проблемы? Если не сложно...
0
|
|
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
|
| 18.11.2019, 11:44 | |
|
Lucky64, ещё из плохого: работа с контекстом EF'а прямо из контроллеров. Под два HttpGet атрибута на каждом методе контроллера (должен быть атрибут). В сущностях EF'а нет навигационных свойств. Та же болячка и в коде компонентов ангуляра: прямая работа с HttpClient прямо из самого компонента.
1
|
|
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||
| 18.11.2019, 13:10 [ТС] | ||
|
0
|
||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
|||||||
| 18.11.2019, 13:36 | |||||||
И то, что вы с EF голым работаете прямо в контроллерах - тоже. Вы такое могли на учебных примерах видеть. Это ОК. Это для простоты примеров делалось, а не потому, что это правильно.
1
|
|||||||
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||
| 18.11.2019, 16:05 [ТС] | ||||
![]() ![]() спасибо заранее!!!
0
|
||||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
||||
| 18.11.2019, 16:27 | ||||
|
1
|
||||
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||||||||||
| 19.11.2019, 08:23 [ТС] | ||||||||||||
Добавлено через 10 минут Usaga, нет не годно, уже понял, работаю дальше ![]() Добавлено через 17 минут Вот так заработало:
0
|
||||||||||||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
|
| 19.11.2019, 08:35 | |
|
Lucky64, условие в Where не правильное. Вам нужны сообщения между двумя конкретными пользователями. А вы выгребаете сообщения в которых фигурирует хотя бы один пользователь (из двух искомых), а потом в оперативке уже вытаскиваете сообщения конкретной пары пользователей. Это не правильно.
Добавлено через 6 минут Lucky64, кстати, сортировки по дате поступления сообщений тоже нет. Видимо, идёт рассчёт на то, что порядок определяемый первичным ключом будет совпадать с порядком добавления сообщений в базу. Но это не всегда верно и не правильно на это завязываться.
1
|
|
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||||||
| 19.11.2019, 08:50 [ТС] | ||||||||
|
переписал вот так, и вроде все теперь работает как надо
![]()
0
|
||||||||
|
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
|
||||||
| 19.11.2019, 09:00 | ||||||
|
Lucky64,
0
|
||||||
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
||||||||||||
| 19.11.2019, 09:16 [ТС] | ||||||||||||
|
Добавлено через 4 минуты Usaga, Добавил дату и время:
0
|
||||||||||||
|
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
|
|
| 19.11.2019, 09:21 [ТС] | |
|
Хотя в чате все заработало
0
|
|
| 19.11.2019, 09:21 | |
|
Помогаю со студенческими работами здесь
20
Реализовать внутреннюю переписку на сайте Восстановить переписку в Outlook Express Как лучше хранить переписку?
Как перевернуть переписку в HTML& Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
|