Signalr 有没有办法从信号器中的Clients.method调用中排除客户端?

Signalr 有没有办法从信号器中的Clients.method调用中排除客户端?,signalr,Signalr,我正在评估signar(它恰好与Knockoutjs一起使用),看看我们是否可以使用它来通知客户端并发性问题。基本上,用户“a”保存记录,并通知用户“b、c、d、e、f、g”。我基本上有一个通知所有客户的示例。所以我想我就快到了 我遇到了这一点,它引导我走上当前的道路。我还一直在看有关的文档 基本上,我想从Clients.method()调用中排除单个客户端。我看不出有什么方法可以循环浏览客户机并检查客户ID。我能看到的实现这一点的唯一其他方法是,或许可以考虑使用小组来跟踪它,但这似乎有点麻烦,

我正在评估signar(它恰好与Knockoutjs一起使用),看看我们是否可以使用它来通知客户端并发性问题。基本上,用户“a”保存记录,并通知用户“b、c、d、e、f、g”。我基本上有一个通知所有客户的示例。所以我想我就快到了

我遇到了这一点,它引导我走上当前的道路。我还一直在看有关的文档

基本上,我想从
Clients.method()
调用中排除单个客户端。我看不出有什么方法可以循环浏览客户机并检查客户ID。我能看到的实现这一点的唯一其他方法是,或许可以考虑使用小组来跟踪它,但这似乎有点麻烦,但我也遇到了一些问题

 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);
    }
}
javascript代码:

<script type="text/javascript">
    $(document).ready(function () {
        var test = $.connection.test;
        $("#btnTest").click(function () {
            test.testMethod();
        });
        test.show = function (text, guid) {
            if (guid != test.guid) //notify all clients except the caller
                alert(text);
        };
        $.connection.hub.start(function () { test.start(); });
    });
</script>

如果要从对客户端方法的调用中排除调用方,可以使用:

Clients.Others.clientSideMethod();

还有Clients.AllExcept(…)允许排除某些人。

您能清楚地说明您想做什么吗?您想向特定用户显示用户所做的更改吗?@sinanakyazici重申一下,我需要通知除调用者之外的所有客户端。似乎没有一种方法可以循环通过客户端来排除某个特定的客户端。你可以叫一个特定的,也可以叫全部。太好了。我没有想过用javascript来管理它。我还希望使用客户端id,而不是管理自己的标识符。然而,这是可行的。谢谢解决了我的问题..感谢sinanjust提供的记录对于这样的琐事,您也可以使用
$.connection.hub.id
而不是您自己的guid。此解决方案唯一的缺点是,如果发送给所有客户端的消息相当大,则将其转储到客户端会浪费带宽。在我的使用中,移动开发,这可能是一个巨大的损失!这假设用户a调用了HubYep,我现在使用它。但在提出这个问题时,这个版本并没有这样的号召力。
Clients.Others.clientSideMethod();