SignalR(Knockoutjsで使用される)を評価して、クライアントに並行性の問題を通知できるかどうかを確認しています。基本的にユーザー "a"はレコードを保存し、ユーザー "b、c、d、e、f、g"に通知します。私は基本的にすべてのクライアントに通知する作業例を持っています。だから、私はほとんどそこにいると思う。SignalRのClients.methodコールからクライアントを除外する方法はありますか?
私はこのlinkに出くわしました。私は現在の私の道に導いてくれます。私は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);
}
}
あなたは明確にしたいことを述べることができますか?ユーザーが行った変更を特定のユーザーに表示しますか? – sinanakyazici
@ sinanakyaziciもう一度言いたいのですが、発信者以外のすべてのクライアントに通知する必要があります。特定のものを除外するためにクライアントをループする方法はないようです。特定のものを呼び出すことも、すべてを呼び出すこともできます。 – Etch