Каждая активная вкладка представляет собой одно соединение с SignalR ( Клиент ) с уникальным ConnectionId
.В зависимости от использования уведомлений посетителю не требуется входить в систему. Соединение с SignalR Hub устанавливается после инициализации кода JavaScript.
Вы можете просто вызвать (вызвать) функцию JavaScript изсервер для каждого клиента (посетителя).Таким образом, все посетители получат уведомление:
await Clients.All.SendAsync("ReceiveNotification", "Your notification message");
Все подключенные клиенты получат это «событие» с сервера.Напишите 'listener' для события ReceiveNotification
внутри вашего JavaScript, чтобы сделать что-то на стороне клиента:
connection.on("ReceiveNotification", function (user, message) {
// Show the notification.
});
Пример
В зависимости от того, как вы хотите отправить уведомление, выможет вызвать ReceiveNotification
:
1) из JavaScript;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
2) с сервера (например, контроллера), используя IHttpContext<THub>
public class HomeController : Controller
{
private readonly IHubContext<SomeHub> _hubContext;
public HomeController(IHubContext<SomeHub> hubContext)
{
_hubContext = hubContext;
}
public async Task<IActionResult> Index()
{
await _hubContext.Clients.All.SendAsync("ReceiveNotifiction", "Your notification message");
return View();
}
}
Пример (измененный) взят из документации SignalR HubContext .