即使使用了一个组,SignalR也会向所有人广播

时间:2019-03-04 23:10:30

标签: javascript c# asp.net-mvc signalr

我正在模仿LinkedIn的帖子和评论系统。我想使用SignalR自动更新评论部分,所以我创建了一个添加了每个用户的组,该组将转到他的新闻提要页面。当任何人开始输入评论时,前端的JavaScript会将发帖人ID和帖子ID发送到中心,中心会过滤出可以使用该群组看到此帖子的每个朋友/用户。然后它将新的更新推送给所有匹配的朋友/用户。这是我的中心代码:

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);
}

0 个答案:

没有答案