天天看點

SignalR的簡單使用(二)

  之前提到SignalR代理在網頁,通過生成的Js來完成相關的功能。但我不禁想一個問題,

難到SignalR的服務端就能寄存在web端嗎,通過通路網頁能方式才能啟動服務,還有用戶端

也隻能在web端嗎?經過看官網的教程得到 了結論,兩者的答案都是否定的。

關于上一篇的hub名第一個為小寫的問題,還有調用用戶端和服務端方式的問題,後面的教程

提到,這些名字都是用駝峰命名法的,即使定義時收字母是大寫,調用時首字母小寫也能調到。

1.用戶端

SignalR的用戶端可是DOTNET下所有的用戶端,包括windowsForm、WPF等。

下列以winform為例說明問題,在DOTNET用戶端實作SignalR的用戶端需要添加

元件Microsoft.AspNet.SignalR.Client。

1.1建立Hub連接配接執行個體 HubConnection hubConnection=new HubConnection("uri");

其中url為SignalR的寄宿位址。這裡仍然是寄宿在web端。

2.建立Hub代理執行個體 IHubProxy hubProxy=hubConnection.CreateHubProxy("myHub");

其中myHub為自定的Hub類。

3.通過代理執行個體注冊用戶端執行個體hubProxy.On("functionName",()=>{MessageBox.Show("可以");});

其中functionName為方法名,後面的為Lamda表達式表示方法體。

4.開啟連接配接 hunConnection.Start();

5.調用服務端方法 hubProxy.Invoke("send");

其中send為服務端方法名,首字母也遵循駝峰命名法。

第二個參數是方法的參數,這裡沒傳參數。

2.服務端--讓服務端寄宿在DOTNET用戶端

這裡仍然以Winform為例說明問題。

2.1.引入元件Microsoft.AspNet.SignalR.SelfHost和Microsoft.Owin.Cors。

2.2.建立Startup類,用于配置Hub,代碼如下

2.3.建立集線器類,使用者hub的服務端,處理業務邏輯。

2.4.定義一個字元串,用作hub服務端的web位址。例如:

2.5開啟連接配接 

這個方法的内部會去執行Startup類的Configuration方法配置Hub。

和直接生成的集線器類一直,隻是這裡寄宿在的Winform上。

當然這裡還是要執行Winform才能運作SignalR,時間有限,日後發現更好的

辦法會及時更新。

繼續閱讀