Как вызвать команду 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.

Вы можете найти больше информации в этой статье

Другие вопросы по тегам