Я использую SignalR
для обновления пользовательских задач в Asp.net MVC.
Но у меня есть проблема, в моем классе хаба SignalR
приведенный ниже метод не вызывает метод на стороне клиента для обновления задачи с клиентом connectionId
.
Я получаю connectionId
из списка подключений при входе пользователя в систему.
Дело в том, что пользователь успешно вышел из системы с помощью connectionId
, но это проблема в этом случае для обновления его задач?
Где проблема?
сильный метод SignalR Hub текст
public void InvitationForConference(long assignedTo)
{
try
{
var connectionId = GetUserCoonectionId(assignedTo);
// Update Tasks
Clients.Client(connectionId).invitationForAllConference(assignedTo);
// Update Notifications
Clients.Client(connectionId).invitationNotificationForAllConference(assignedTo);
}
catch (Exception ex)
{
throw ex;
}
}
Сильный текст Js Client Method
signalR.client.invitationForAllConference = function (AssignedId)
{
debugger
LoadTasks(AssignedId);
};
**strong Js File text**
var IsLogin = '';
IsLogin = $("#LoginConnectionId").val();
var signalR = $.connection.signalRHUB;
debugger;
if (IsLogin == "OPEN") {
$.connection.hub.start().done(function () {
debugger
IsLogin == "CLOSE";
signalR.server.createConnection();
});
}
else {
$.connection.hub.start().done(function () { });
}
signalR.client.invitationForAllConference = function (AssignedId) {
debugger
LoadTasks(AssignedId);
};
signalR.client.invitationNotificationForAllConference = function (AssignedId) {
debugger
LoadNotificationAlerts(AssignedId);
};
[Authorize]
public class SignalRHUB : Hub
{
private readonly static ConnectionMapping<string> _connections =
new ConnectionMapping<string>();
private readonly IUnitOfWork _unitOfWork;
private readonly UserManager<IdentityUser, long> _userManager;
private readonly IUnitOfWork _unitOfWorkLazyLoad;
public SignalRHUB(IUnitOfWork unitOfWork, IUnitOfWork unitOfWorkLazyLoad)
{
try
{
//_userManager = userManager;
_unitOfWork = unitOfWork;
_unitOfWorkLazyLoad = unitOfWorkLazyLoad;
}
catch (Exception ex)
{
}
}
public void InvitationForConference(long assignedTo)
{
try
{
var connectionId = GetUserCoonectionId(assignedTo);
// Update Tasks
Clients.Client(connectionId).invitationForAllConference(assignedTo);
// Update Notifications
Clients.Client(connectionId).invitationNotificationForAllConference(assignedTo);
}
catch (Exception ex)
{
throw ex;
}
}
}