On
界面中可用的Subscribe
和IHubProxy
方法之间有何区别?什么时候应该使用一个
答案 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/