SignalR передает всем, даже если используется группа - PullRequest
0 голосов
/ 05 марта 2019

Я имитирую систему сообщений и комментариев 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);
}

, и мой подключенный выглядит следующим образом:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...