Как вызвать команду SignalR вне внешнего интерфейса
Мне кажется, что я либо упускаю суть сервиса SignalR, либо неправильно понял архитектуру.
Используя службу Azure SignalR, я установил связь между интерфейсом и интерфейсом;
Startup.cs
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
app.MapAzureSignalR(this.GetType().FullName);
}
Hub.cs
private void BroadcastMessage(string message)
{
Clients.All.broadcastMessage(message);
}
Index.html
hubName.client.broadcastMessage = function (message) {
alert(message);
};
$('#btn').click(function () {
hubName.server.broadcastMessage("Hello World");
});
Это нормально, и когда мне нужен сервер для запуска сообщения, я использую следующее;
Functions.cs
HubConnection signalr = new HubConnection("http://localhost:57690/");
IHubProxy hub = null;
if (signalr.State == ConnectionState.Disconnected)
{
hub = signalr.CreateHubProxy(hubName);
signalr.Start().Wait();
}
hub.Invoke(functionName, args);
signalr.Stop();
Хотя это работает, я не могу понять, правильно ли я это реализовал. http://localhost:57690/signalr/hubs
открыт для сообщений из любого источника.
В начале я должен предоставить Endpoint=https://appName.service.signalr.net;AccessKey=xxxxx
установка, но не от конца.
Помимо соображений безопасности, это заставляет меня задуматься о том, для чего в этом заключается служба SignalR.
Конечно, должен быть лучший способ вызвать сигнализатор из серверной части.
Большое спасибо,
Том
1 ответ
В Startup.cs у вас должна быть строка кода, подобная этой
services.AddSignalR().AddAzureSignalR();
Не передавая параметр в AddAzureSignalR()
этот код использует ключ конфигурации по умолчанию, Azure:SignalR:ConnectionString
, для строки подключения ресурса службы SignalR.
Вы можете найти больше информации в этой статье