我正在评估 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);
}
}