Код: Выделить всё
public class LeaderboardHub : ServerlessHub
{
[FunctionName("negotiate")]
public async Task Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req) =>
Negotiate(req.Headers["x-ms-signalr-user-id"]);
[FunctionName(nameof(OnConnected))]
public async Task OnConnected([SignalRTrigger]InvocationContext invocationContext, ILogger logger)
{
logger.LogInformation($"{invocationContext.ConnectionId} has connected");
}
}
Код: Выделить всё
const apiBaseUrl = window.location.origin;
const connection = new signalR.HubConnectionBuilder()
.withUrl(apiBaseUrl + '/api')
.configureLogging(signalR.LogLevel.Information)
.build();
connection.start()
.catch(console.error);
Моя теория: Надеюсь, я Я ошибаюсь, но я в некоторой степени предполагаю, что это связано с тем, что я запускаю свое приложение на своем ноутбуке под локальным хостом, и службы Azure SignalR Services не имеют возможности «переслать» сообщение мне, поскольку Azure не может подключиться к моему ноутбук. Я не пробовал развертывать свое приложение-функцию в Azure, чтобы запустить его там, но предполагаю, что если бы я запустил его в Azure, было бы двустороннее соединение.
- Это правильное предположение? То есть является ли это ограничением служб Azure SignalR?
- Есть ли какой-нибудь способ обойти это? Например, запускаете какую-нибудь локальную прокси-службу или эмулятор AzureR SignalR? Как люди обычно занимаются разработкой с помощью SignalR, не развертывая все небольшие изменения в Azure?
Подробнее здесь: https://stackoverflow.com/questions/739 ... -functions