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

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

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

16 ответов

98 просмотров

عندما يتعلق الأمر بتخزين قائمة المجموعات الخاصة بك، لديك العديد من الخيارات. يمكنك تخزين قائمة المجموعات في المركز نفسه، باستخدام مجموعة أو قاموس، على سبيل المثال. سيسمح لك ذلك بإضافة المجموعات وإزالتها والوصول إليها بسهولة. إذا كنت بحاجة إلى حفظ قائمة المجموعات بين عمليات تشغيل التطبيقات المختلفة أو على خوادم مختلفة، فقد تحتاج إلى تخزين بيانات خارجية مثل قاعدة بيانات أو ذاكرة تخزين مؤقت. يمكنك، على سبيل المثال، استخدام قاعدة بيانات 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 минут не репортал что он онлайн. За счёт таблица будет чиститься

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта