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