Как правильно вызвать функцию на клиенте через SignalR за учётом авторизации?
Здравствуйте!
Как правильно вызвать нужную функцию на клиенте через SignalR?
Пример
Есть блог система на web api + react. При создании нового поста, должна обновиться страница блога. Условно, на api endpoint'е идёт вызов hub.Client.All.SendAsync("appendNewPost" ...) который триггерит всех клиентов, но пост должен быть додан к блогу, к которому и создавали этот пост (Логично)
Проблема
Для того, что бы понять, стоит ли обновлять текущую страницу на клиента, при вызове функции appendNewPost идёт проверка простым if/else где проверяет, нужно ли на этом блоге добавлять новый пост, или он не сюда адресованный.
У каждой страницы блога есть id. При обновлении страницы блога, SignalR сервер может рассылать информацию об обновлённом id. Клиенты (браузеры) сверяют - какой id сейчас открыт и какой обновился. При совпадении - обновляют страницу.
Sergey В., я так и делаю, просто проверяю через if/else, но это немного бед@льный способ, я хочу найти другой
Но для примера, есть 100500 блогов каких-то, зачем каждому из них получить уведомление о том, что на один из этих блогов был добавлен пост? Мне нужно отправить информацию о новом посте только в тот блог, с какого был создан этот пост
Nik Faraday, Получается что нужен список клиентов (браузеров), на которых открыт определённый блог. И при добавлении поста рассылку нужно выполнять только на них. В этом случае возможно решением будет использование групп SignalR
При открытии страницы, клиент подписывается на группу (блог) и получает оповещения вместе с другими подписчиками.
О группах также можно почитать здесь.
Sergey В., т.е. при использовании групп, отправка сообщения будет происходить только та подписанных на эту группу "Клиентов", а не на всех клиентов вообще, верно я понимаю?
Получается что нужен список клиентов (браузеров), на которых открыт определённый блог.
И при добавлении поста рассылку нужно выполнять только на них. В этом случае возможно решением будет использование групп SignalR
При открытии страницы, клиент подписывается на группу (блог) и получает оповещения вместе с другими подписчиками.
О группах также можно почитать здесь.