2013-08-06 44 views

回答

29

訂閱的級別較低,您應該永遠不必使用它。 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); 
    }); 
} 
+0

這真棒謝謝 – redIntent

1

我討厭死靈,但這螺距我失望了一條黑暗的小巷。實際上可以使用Reactive Extensions(Rx)來處理訂閱,並且在許多情況下這是可取的,因爲它允許合成。

一篇不錯的文章解釋基礎知識。代碼示例中的格式可能有點拙劣,但你可以到達那裏。 https://www.safaribooksonline.com/blog/2014/02/10/signalr-rx-framework/

+0

嗨,歡迎來到Stack Overflow!在舊線程上發佈一個很好的答案就可以了(如果還沒有,請查看[答案]),但如果鏈接出現故障,您應該[在編輯時]在您的答案中引用鏈接的相關部分。 – whrrgarbl

+0

我會的,但如果你讀的文章有問題引用它會佔用相當大的空間;) – user106394

+0

如果你閱讀[答] - 「鼓勵外部資源的鏈接,但請在鏈接上添加上下文,以便你的其他用戶將會知道它是什麼以及它爲什麼在那裏。總是引用重要鏈接中最相關的部分,以防目標站點無法訪問或永久脫機。「博客文章不太長,總結 - 即使只是增加一個比較會使這個答案更加實質。如果用於獲取高質量信息,佔用空間就很好了! – whrrgarbl

相關問題