我正在模仿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);
}