如何在web api中使用SignalR


說明: 在webapi中使用signalr,使用IIS

環境: vs2012, .net4.5  

第一步:建web api項目

    

第二步:nuget導入signalr

    

   

   Install-Package Microsoft.AspNet.SignalR

Install-Package Microsoft.Owin.Cors  (用於跨域)

第三步:創建hub類

      

      demo是從網上down的,去除了一些沒用到的東西,只保留了MessageHub

 

第四步:創建Startup類

       

第五步:在webapi方法中調用推送

        

     

      Clients.All 會給所有客戶端推送, hub.Clients.All.showMessage()意思是調用所有連接的客戶端的showMessage方法。

  說明:如果想給指定的人推送,要先獲得指定連接的ConnectionId, 通過

  hub.Clients.Clients(iList<string> list).showMessage 來調用,  這里的list是ConnectionId集合。

  注1:showMessage這個方法名是自定義的,只要與前端一致即可。

  注2:后面會說怎么給指定人推送消息。 

  至此,signalr在webapi的代碼已經完成。將其放到iis里。注意應用程序池的.net版本。

  IIS綁定的9999端口,所以網址就是  http://localhost:9999

 

第六步:編寫接收推送消息的web端A

     建一個web程序,這里只建了一個webform程序。在nuget中導入signalR

     

      

  這里的地址的前半段就是iis綁定的地址。

  $.connection.messageHub, 這個messageHub首字母要小寫。

  hub.client.showMessage,對應webapi里的調用。

  jQuery.support.cors=true, 主要針對IE8,9跨越(本人並未驗證)

      補充: 

        $.connection.hub.disconnected(function (e) {
             console.log("斷開連接"); //這里添加斷開連接的處理方法
        });
       //如果斷開連接,會自動重連10次,10次都失敗,會觸發disconnected方法

第七步:使用app或者其他端調用webapi里的方法, web端A推送消息

      這里就不用app了,用一個web頁面來代替app調用。具體如下:

     

    END:一個簡單的demo完成了。

    

    最后:如何推送給指定用戶。

        向指定用戶推送,要用到connetionid 。

        在MessageHub類里添加一個SendLogin方法:

       

   這是網上找到demo, 后期考慮把 name和connetionid關系存到數據庫中。

   接收推送端:注意首字母小寫

       

     

   Webapi方法里:

         

       

 

       參考博客:

           http://blog.csdn.net/a1002308667/article/details/51205513

           http://www.cnblogs.com/humble/p/3856357.html

           http://www.cnblogs.com/landeanfen/p/5177176.html

           等等

 

       

 

 

 

   

 


免責聲明!

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



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