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

Всем привет. Подскажите, пытаюсь проверить существует ли группа в хабе

SignalR. Насколько я понял, то базовых методов для получения списка групп нет. Думаю создать список групп самому. Где можно хранить такой список? В самом хабе или за его пределами? Или идея полный бред?

16 ответов

36 просмотров

عندما يتعلق الأمر بتخزين قائمة المجموعات الخاصة بك، لديك العديد من الخيارات. يمكنك تخزين قائمة المجموعات في المركز نفسه، باستخدام مجموعة أو قاموس، على سبيل المثال. سيسمح لك ذلك بإضافة المجموعات وإزالتها والوصول إليها بسهولة. إذا كنت بحاجة إلى حفظ قائمة المجموعات بين عمليات تشغيل التطبيقات المختلفة أو على خوادم مختلفة، فقد تحتاج إلى تخزين بيانات خارجية مثل قاعدة بيانات أو ذاكرة تخزين مؤقت. يمكنك، على سبيل المثال، استخدام قاعدة بيانات SQL أو حل NoSQL لتخزين معلومات حول المجموعات. في النهاية، يعتمد المكان الذي تختاره لتخزين قائمة مجموعتك على متطلباتك المحددة وبنية التطبيق الخاص بك.

Нету как я помню. И это не с проста. Желательно подумать как обойтись без этого. Иначе можно потерять масштабируемость

Pavel 𓆏ࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩ
Нету как я помню. И это не с проста. Желательно ...

SignalR хостится в приложении, но есть такая штука Azure SignalR service. Это отдельный ажуровский сервис, который хостит SignalR. К нему можно прицепить несколько инстансев приложения - для твоего приложение будет не отличимо используется ли self-hosted signalR или azure service. Это то, как масштабируется (горизонтально) SignalR. Поэтому нужно хорошо подумать прежде чем колхозить методы для перечисления групп. Так как если они будут в памяти, то не будут шариться между инстансами

Михаил- Автор вопроса
Pavel 𓆏ࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩ
SignalR хостится в приложении, но есть такая штука...

У меня загвоздка в следующем. Есть задание реализовать простой чат, где можно создавать группы,коннектится к ним и т.д. Если я правильно понял метод AddToGroupAsync(connectionId, groupName) добавляет юзера в группу и если не находит группу с таким именем - автоматически создаёт её. А мне надо как-то проверять, существует такая группа или нет. Если нет - то возвращать ошибку, что группа не существует.

Не знаю как хранить в "самом хабе". В целом если известно что всегда будет 1 экземпляр приложения, то можно где угодно. Если же несколько, то нужно хранить вне приложения. В базе или в редисе

Михаил
У меня загвоздка в следующем. Есть задание реализо...

А, ну тогда все просто. Получается у тебя не динамические группы Тебе нужно хранилище (таблица в базе например) со списком групп. Если в таблице есть группа, то AddToGroupAsync, если нету то ошибка

Михаил- Автор вопроса
Pavel 𓆏ࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩ
А, ну тогда все просто. Получается у тебя не дина...

А можете ещё подсказать, как реализовать лучше "удаление" группы? Логика должна быть след.: "Удалить" группу может только создатель (храним инфу по группе и создателю в БД) и только после отключения всех юзеров из чата. Как удалить юзеров, ведь для удаления нужно знать их connectionId ? Т.е. у меня проблема с тем, чтобы правильно получить и хранить connectionId юзеров. Вариант вижу такой: Когда юзер подключается к чату через метод хаба Join() внутри этого метода сохранять connectionId в БД А методе API, который "удаляет" группу, получать все connectionId указанной группы и в цикле вызывать RemoveFromGroupAsync() для каждого connectionId.

Михаил
А можете ещё подсказать, как реализовать лучше "уд...

Это может быть очень плохо по производительности. Что если было 10.000 подключений за неделю. 9990 уже отключилась и администратор удаляет группу

Михаил
А можете ещё подсказать, как реализовать лучше "уд...

Я на самом деле не особо шарю в теме =( Возможно нужно трекать подключения и отключения . Т.е иметь актуальный список подключений в бд . Читани статью https://learn.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/working-with-groups#storedatabase

Михаил- Автор вопроса

А если переопределить метод OnDisconneсtedAsync() и внутри него удалять информацию пользователя со связанной группой?

Михаил
А если переопределить метод OnDisconneсtedAsync() ...

Ну да. Видимо что-то такое нужно. А можно ещё хелс-чек. Типа юзер раз в минуту должен отправлять уведомления "я он лайн, в такой-то группе". В таблице юзеру обновлять дату последнего хелсчека. Раз в 10 минут допустим запускать Джобу и мочить всех юзеров, кто больше 2 минут не репортал что он онлайн. За счёт таблица будет чиститься

Pavel 𓆏ࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩࣩ
Ну да. Видимо что-то такое нужно. А можно ещё хе...

Дискотектед переопределить вроде как проще. Нужно просто изучить насколько это надёжный механизм. Не будут юзеры копиться

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

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

Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Карта сайта