#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, в нем все было правильно, затем все пошло наперекосяк и я снова начал отправлять сообщения всем… странно..