20

接口中可用的方法On和方法有什么区别。什么时候应该使用一个而不是另一个SubscribeIHubProxy

4

2 回答 2

35

订阅是较低级别的,您真的应该永远不必使用它。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);
    });
}
于 2013-08-06T08:27:58.417 回答
1

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

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

于 2016-09-07T21:08:04.863 回答