Я использую SignalR для рассылки сообщений всем своим клиентам. Мне нужно запустить трансляцию вне моего класса хаба, то есть примерно так:
var broadcast = new chatHub();
broadcast.Send("Admin","stop the chat");
Я получаю сообщение об ошибке:
Использование экземпляра Hub, созданного не HubPipeline, не поддерживается.
signalr
signalr-hub
Нитин Агравал
источник
источник
GetHubContext
нет вызывающего абонента, поскольку он предназначен для использования вне концентратора.Clients.All
должен адресовать каждого клиента, который в настоящее время подключен к концентратору.IHubContext
. Вы не можете использовать это для вызова методов концентратора.context.Clients.All.broadcastMessage("Admin", "stop the chat");
использовать broadcastMessage вместо Send.Небольшое обновление для тех, кому интересно, куда
GlobalHost
делось. SignalR был полностью переписан для ядра .NET. Итак, если вы используете пакет SignalR.Core ( разница между версиями SignalR ), вы получаете экземпляр контекста концентратора SignalR, внедряя его в свою службу:И в
Startup.cs
:Документ Microsoft находится здесь: Отправка сообщений SignalR из-за пределов концентратора .
источник