SignalR транслирует всем, даже если используется группа

#javascript #c# #asp.net-mvc #signalr

#javascript #c# #asp.net-mvc #signalr

Вопрос:

Я имитирую систему сообщений и комментариев LinkedIn. Я хочу использовать SignalR для автоматического обновления раздела комментариев, поэтому я создал группу, в которую добавил каждого пользователя, который будет переходить на страницу его ленты новостей. Когда кто-либо начинает вводить комментарий, JavaScript во внешнем интерфейсе отправляет идентификатор постера и идентификатор публикации в хаб, и хаб отфильтровывает каждого друга / пользователя, который может видеть этот пост с помощью группы. Затем он отправит новое обновление всем соответствующим друзьям / пользователям. Вот мой код хаба:

 public void AnnounceComment(int postId, string postUserId)
{
    string userID = Context.User.Identity.GetUserId();

    var owner = u.context.Users.Include(u => u.Friends).Where(u => u.Id == postUserId).FirstOrDefault();

    var idList = owner.Friends.Select(f => f.FriendUserID).ToList();

    idList.Add(postUserId);

    Clients.OthersInGroups(idList).AnnounceComment(postId);
}
  

и мой on connected выглядит следующим образом:

 public  override Task OnConnected()
{
    string name = Context.User.Identity.GetUserId();

    Groups.Add(Context.ConnectionId, name).Wait();

    return base.OnConnected();
}
  

мой передний конец:

 $.connection.hub.start()
    .done(function () { })
    .fail(function () { alert("ERRORRR!!!!!") })

//From client to server talking to it.
function signalrAnnounce(postID,op) {
    $.connection.linkedInHub.server.announceComment(postID,op);
}

$.connection.linkedInHub.client.announceComment = function (message) {

    alert(message);
}
  

Комментарии:

1. Чтобы уточнить, проблема, с которой вы столкнулись, заключается в том, что SignalR отправляет обновления всем пользователям, а не подмножеству пользователей, подписанных на определенную группу?

2. ДА. Как ни странно, это нормально работает в Microsoft Edge… но не работает должным образом в Chrome или Firefox.

3. Вы пробовали использовать Windows-браузер incognito? Возможно, вы просто видите путаницу файлов cookie / токенов аутентификации

4. Первые 3-4 раза я использовал браузер incognito, в нем все было правильно, затем все пошло наперекосяк и я снова начал отправлять сообщения всем… странно..