Signal与IHubProxy订阅之间的区别

时间:2013-08-06 08:13:09

标签: c# signalr signalr-hub

On界面中可用的SubscribeIHubProxy方法之间有何区别?什么时候应该使用一个

2 个答案:

答案 0 :(得分:34)

订阅是较低级别,您应该永远不必使用它。 On提供友好的重载,允许强大的参数类型。这是一个例子:

服务器

public class MyHub
{
    public void Send(string message, int age)
    {
        Clients.All.send(message, age);
    }
}

客户端

订阅模式

public void Main()
{
    var connection = new HubConnection("http://myserver");
    var proxy = connection.CreateHubProxy("MyHub");

    var subscription = proxy.Subscribe("send");
    subscription.Received += arguments =>
    {
        string name = null;
        int age;
        if (arguments.Count > 0)
        {
            name = arguments[0].ToObject<string>();
        }

        if (arguments.Count > 1)
        {
            age = arguments[1].ToObject<int>();
        }

        Console.WriteLine("Name {0} and age {1}", name, age);
    };
}

“开”模式

public void Main()
{
    var connection = new HubConnection("http://myserver");
    var proxy = connection.CreateHubProxy("MyHub");

    proxy.On<string, int>("send", (name, age) =>
    {
        Console.WriteLine("Name {0} and age {1}", name, age);
    });
}

答案 1 :(得分:1)

我讨厌死灵,但是这条线索引导我走下一条黑暗的小巷。实际上可以使用Reactive Extensions(Rx)来处理订阅,并且在许多情况下这是优选的,因为它允许组合。

一篇足以解释基础知识的文章。在代码示例中,格式化有点拙劣,但你可以到达那里。 https://www.safaribooksonline.com/blog/2014/02/10/signalr-rx-framework/