Я оцениваю SignalR (который используется с Knockoutjs), чтобы увидеть, можем ли мы использовать его для уведомления клиентов о проблемах параллелизма. В основном пользователь «a» сохраняет запись, а пользователи «b, c, d, e, f, g» получают уведомление. У меня в основном есть пример работы, который уведомляет всех клиентов. Так что я думаю, что я почти там.
Я наткнулся на эту ссылку, и она привела меня к текущему пути, по которому я иду. Я также просматривал документацию на Github.
В основном я хочу исключить одного клиента из вызова Clients.method()
. Я не вижу способа пройтись по клиентам и проверить ClientId. Единственное другое, что я вижу для достижения этой цели, — это, возможно, взглянуть на использование групп, чтобы отслеживать это, но это казалось немного громоздким, но у меня тоже были проблемы с этим.
public class TicketHub : Hub
{
static int TotalTickets = 10;
public void GetTicketCount()
{
AddToGroup("ticketClients");
Clients.setTicketCount(TotalTickets);
}
public void BuyTicket()
{
if (TotalTickets > 0)
TotalTickets -= 1;
RemoveFromGroup("ticketClients");
// This will call the method ONLY on the calling client
// Caller.updateTicketCountWithNotification(TotalTickets);
// This will call the method on ALL clients in the group
Clients["ticketClients"].updateTicketCountNotify(TotalTickets);
AddToGroup("ticketClients");
Caller.updateTicketCountDontNotify(TotalTickets);
}
}