Тёмный

SignalR Chat: Сервер и его клиенты 

Sergei Calabonga
Подписаться 6 тыс.
Просмотров 10 тыс.
50% 1

В этом видео я покажу вариант реализации чата (real-time) на SignalR с возможностью подключения клиентов с разных платформ. Исходные файлы чата вы можете найти на github.com.
Ссылки:
dotnet.microso...
docs.microsoft...
www.calabonga....
github.com/Cal...
github.com/Cal...
Благодарности и помощь каналу принимаются:
www.calabonga....

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 29   
@DInfinity3
@DInfinity3 2 года назад
Большое спасибо за видео. А как организовать пересылку сообщения от одного конкретного пользователя к другому конкретному пользователю?
@SergeiCalabonga
@SergeiCalabonga 2 года назад
У каждого прдключения есть ConnectionId. Смотреть надо в эту сторону. 🙂
@JuiKoloshi
@JuiKoloshi 2 года назад
А как реализовать javascript клиента signalR? Есть ли какая то библиотека?
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Не задавался таким вопросом, если честно. Просто использую SingalR и всё.
@rustc2p256
@rustc2p256 3 года назад
Отличное видео
@SergeiCalabonga
@SergeiCalabonga 3 года назад
И это только начало!
@Happy-vl7ol
@Happy-vl7ol 3 года назад
Ничего себе, так изменился. Лайк
@SergeiCalabonga
@SergeiCalabonga 3 года назад
Кто изменился? Что изменилось?
@Happy-vl7ol
@Happy-vl7ol 3 года назад
@@SergeiCalabonga ну качество подачи изменилось в лучшую сторону!
@Happy-vl7ol
@Happy-vl7ol 3 года назад
​@@SergeiCalabonga вообще спасибо за такие видео, благодаря им я выучил Blazor
@SergeiCalabonga
@SergeiCalabonga 3 года назад
Ну, что ж... Растем над собой!!!
@SergeiCalabonga
@SergeiCalabonga 3 года назад
@@Happy-vl7ol Ну, выучил - это наверное сильно сказано! Наверное правильнее сказать "познакомился"
@AlexandrSkarbo
@AlexandrSkarbo 2 года назад
Это извращение появилось из-за недостатков стека протоколов http/1.1 уже давно есть 2.0 и 3й будет (ru.wikipedia.org/wiki/HTTP/3). Этот урок интересен в историческом контексте, но для практического применения он уже устарел. Если разрабатывается стек микросервисов на перспективу и выход релиза приложения ожидается в течении года и позже, это может быть связано со многими факторами, то лучше думать на перспективу и использовать 3ю версию, тем более все его поддерживают
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Если честно, то вообще не понял о чем комментарий. Так можно сказать про любую технологию или протокол.
@СергейТарамалы-ш8г
У меня возник вопрос насчет системы definitions, как я понимаю в данной системе мы в каждом definition определяем нужные нам services и middlewares, с сервисами проблем нет, так как там не важен порядок подключения, но в middleware он важен и при этом не понятно в каком порядке по итогу склеиваются middlewares из всех definitions?
@СергейТарамалы-ш8г
я просто использую ваш новый шаблон, где реализованы definitions и создал отдельно SignalRDefinition и там добавил app.UseSignalR ... и приложение крашится в связи с тем что нарушена последовательность middleware, я перенес app.UseSignalR в IdentityDefinition и заработало, но это явно не то что было задумано вами)
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Те definitions, которые имеют значение последовательность я обычно в одном definition делаю. Или вы можете доработать систему и добавить возможность сортировки definitions.
@СергейТарамалы-ш8г
@@SergeiCalabonga Понял, спасибо большое за ответ
@SergeiCalabonga
@SergeiCalabonga 2 года назад
@@СергейТарамалы-ш8г welcome
@alextret6787
@alextret6787 Год назад
круто, спасибо за видео
@SergeiCalabonga
@SergeiCalabonga Год назад
Спасибо за комментарий
@beloved_guy
@beloved_guy Год назад
Большое спасибо, видео пригодилось. Почерпнул для себя что-то полезное! Однако, не могу не отметить, что подача очень непростая. Приходилось пересматривать фрагменты и осмыслять/переосмыслять. Не знаю, какая предполагалась целевая аудитория для этого видео, но мне, как обладателю очень скромных знаний SignalR и не претендующему на звание самого умного, было очень сложно успевать за мыслью. "Это объясню потом", "Это опустим...", "Здесь сделаю немножко за кадром", "Сорри, за кадром часть пришлось переделать" и так далее. В общем, каждая подобная фраза добавляла мне одну каплю пота на лбу. Все таки, если видео позиционируется, как лекция, хотелось бы более четкого схождения от общего к частному и более последовательной разработки
@SergeiCalabonga
@SergeiCalabonga Год назад
1. Есть исходники 2. Я не лектор 3. Спасибо за подробный комментарий 4. 👍
@beloved_guy
@beloved_guy Год назад
@@SergeiCalabonga понял, тогда вопросов нет. Видео, в любом случае считаю полезным. p.s. терпеть не могу чужие исходники))
@semen083
@semen083 3 года назад
Классное видео, интересно следующее: 1) Можно ли тоже самое реализовать с помощью HTTP2- ведь он имеет схожий API взаимодействия с WebSockets- дуплексная связь, обмен в бинарном виде и тд. Самостоятельно к сожалению не нашел способа в C# как можно залезть поглубже в конвейр HTTP2. 2)41:22 Почему "connection.StartAsync().GetAwaiter().GetResult();" вместо простого "await connection.StartAsync();"? 3)На консольном клиенте отсутствует логика обработки дисконнекта-это просто для упрощения или если клиент подсоединился, то кроме как принудительного отсоединения от сервера или по собственному желанию он не может отвалится (.WithAutomaticReconnect() все порешает) (например клиент не активен и он отваливается по таймауту)? 4)Покажите плиз как правильно хранить secrets для продуктивного развертывания (в случае видео password для клиента или строка подключения) 5)Будет ли Singleton ChatManager'ру плохо от того, если будет очень много с ним операций(например одновременно очень много тысяч пользователей добавляются и удаляются, шлют другу другу мемасы через него и тд)- каким образом можно передизайнить ChatManager, чтобы он мог работать с большим объемом операций? 6)Позволит ли замена DateTime на DateTimeOffset использовать приложение глобально-то есть перестать зависеть от региональных настроек сдвига часового пояса? 7)Нормально ли делать для IdentityServer форму авторизации не из MVC, а на полном JavaScript (например сделать SPA приложение Vue и захостить его на нем) 8)Есть ли какие-либо методы компрессии сообщений SignalR (типа gzip или brotli для http запросов)? 9)Это у Вас Half-Life в нижней панели задач около ридера от JetBrains? Спасибо
@SergeiCalabonga
@SergeiCalabonga 3 года назад
Классное видео, интересно следующее: 1) Можно ли тоже самое реализовать с помощью HTTP2- ведь он имеет схожий API взаимодействия с WebSockets- дуплексная связь, обмен в бинарном виде и тд. Самостоятельно к сожалению не нашел способа в C# как можно залезть поглубже в конвейр HTTP2. 2)41:22 Почему "connection.StartAsync().GetAwaiter().GetResult();" вместо простого "await connection.StartAsync();"? 3)На консольном клиенте отсутствует логика обработки дисконнекта-это просто для упрощения или если клиент подсоединился, то кроме как принудительного отсоединения от сервера или по собственному желанию он не может отвалится (.WithAutomaticReconnect() все порешает) (например клиент не активен и он отваливается по таймауту)? 4)Покажите плиз как правильно хранить secrets для продуктивного развертывания (в случае видео password для клиента или строка подключения) 5)Будет ли Singleton ChatManager'ру плохо от того, если будет очень много с ним операций(например одновременно очень много тысяч пользователей добавляются и удаляются, шлют другу другу мемасы через него и тд)- каким образом можно передизайнить ChatManager, чтобы он мог работать с большим объемом операций? 6)Позволит ли замена DateTime на DateTimeOffset использовать приложение глобально-то есть перестать зависеть от региональных настроек сдвига часового пояса? 7)Нормально ли делать для IdentityServer форму авторизации не из MVC, а на полном JavaScript (например сделать SPA приложение Vue и захостить его на нем) 8)Есть ли какие-либо методы компрессии сообщений SignalR (типа gzip или brotli для http запросов)? 9)Это у Вас Half-Life в нижней панели задач около ридера от JetBrains? Спасибо 1) Коллеги просили SignalR. 2) Потому что одно и тоже действие можно выполнить разными способами: и "старыми добрыми" и "модными красивыми". 3) Для демонстрации простого примера работы данный функционал не предусмотрен. В одно видео нельзя впихнуть невпихуемое. 4) Это тема для другого видео. 5) В данном видео Singleton взят для того, чтобы показать что данные должны сохраняться (в памяти, в базе, в текстовом файле), а где уже не важно. 6) В NET 6 появятся "полезности" для хранение времени и дат. Всё упроститься. Но можно и по олдскульному, как вы или как использовал я. 7) На вкус и цвет все фломастеры разные. Кто как хочет...Хоть на Blazor! 8) Никогда не было такой потребности, ибо предназначение SignalR в другом, для больших объемов передаваемых данных можно и получше найти решение. 9) LinqPad.net
Далее
SignalR Chat: Клиент чата на WPF
17:09
Просмотров 2,8 тыс.
OYUNCAK DİREKSİYON İLE ARABAYI SÜRDÜ 😱
00:16
Blazor Authentication 1: Основы
52:08
Просмотров 11 тыс.
Brutally honest advice for new .NET Web Developers
7:19
Сокетный Клиент-Сервер на C#
58:16
OYUNCAK DİREKSİYON İLE ARABAYI SÜRDÜ 😱
00:16