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,代碼如下

 class Startup
    {
        public void Configuration(IAppBuilder app)
        {

            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();

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

 public class MyHub : Hub
    {
        public void Send()
        {
            Clients.All.addMessage();

        }

    }

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

 string url = "http://localhost:61020/"

2.5開啟連接 

 WebApp.Start(url);

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

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

 

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

辦法會及時更新。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM