Около 3 дней мы ищем решение ... локально, в IIS Express все работает нормально ... после развертывания в Azure Web App мы начинаем сталкиваться с сумасшествием SignalR ...
У нас есть WebJob, который подключается к концентратору для отправки обновлений в режиме реального времени ...
Чтобы проверить проблемы с подключением, я получаю возвращаемое значение от функции, вызываемой на сервере, все это происходит ... Итак, подключения выполняются успешно ...
На моем хабе, после получения значения из WebJob, я вызываю функцию Javascript в моем веб-приложении ... каждый зарегистрированный пользователь должен получать обновления.
Но эта функция никогда не срабатывает в Azure ... Локально все работает отлично.
После этого мы попробовали почти все ...
Если запрос поступил из того же экземпляра браузера, функция была вызвана успешно.
Проверьте это здесь:
Открыть ссылку:
http://unique -dev.azurewebsites.net /
Затем откройте эту другую ссылку, чтобы отправить уведомление:
http://unique -dev.azurewebsites.net / AdministratorDashboard / SendNotifications? Текст = MyMessage
SignalRClient.js
var uniqueHub;
$(function () {
uniqueHub = $.connection.billingHubNotification;
uniqueHub.client.uniqueEngineAlert = function (content) {
alert(content);
};
$.connection.hub.start()
.done(function () { })
.fail(function () { console.log('Could not Connect!'); });;
$.connection.hub.error(function (error) {
console.log('SignalrAdapter: ' + error);
});
});
Действие в контроллере
[HttpGet]
[AllowAnonymous]
public ActionResult SendNotifications(string text)
{
try
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<BillingHubNotification>();
var exec = hubContext.Clients.All.uniqueEngineAlert(text);
return Content("Sucesso");
}
catch (Exception ex)
{
return Content("Erro: " + ex.Message);
}
}
Hub
[HubName("billingHubNotification")]
public class BillingHubNotification : Hub
{
IHubContext _context
{
get
{
var context = GlobalHost.ConnectionManager.GetHubContext<BillingHubNotification>();
return context;
}
}
public override Task OnConnected()
{
string name = Context.User.Identity.Name;
_context.Groups.Add(Context.ConnectionId, name);
return base.OnConnected();
}
public void UniqueEngineAlert(string alert, string[] userNames)
{
foreach (var user in userNames)
{
_context.Clients.Group(user).uniqueEngineAlert(alert);
}
}
}
Не могли бы вы, пожалуйста, сохранить нас?