之前提到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,時間有限,日後發現更好的
辦法會及時更新。