1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      asp.net中如何使用SignaiR和Push.js完成消息推送

      這篇文章給大家分享的是有關asp.net中如何使用SignaiR和Push.js完成消息推送的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

      創(chuàng)新互聯(lián)是一家專業(yè)提供湖里企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、成都網(wǎng)站設計、HTML5、小程序制作等業(yè)務。10年已為湖里眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。

      一.使用背景

      1. SignalR是什么?

      ASP.NET SignalR 是為 ASP.NET 開發(fā)人員提供的一個庫,可以簡化開發(fā)人員將實時 Web 功能添加到應用程序的過程。實時 Web 功能是指這樣一種功能:當所連接的客戶端變得可用時服務器代碼可以立即向其推送內(nèi)容,而不是讓服務器等待客戶端請求新的數(shù)據(jù)。

      2.Push.js是什么?【需要瀏覽器支持H5Notifications】

      Notifications翻譯過來即是通知。那么Push.js的通知又是什么樣的,見下圖:大多數(shù)在屏幕的右下角出現(xiàn)。

      asp.net中如何使用SignaiR和Push.js完成消息推送

      需要允許哦:

      asp.net中如何使用SignaiR和Push.js完成消息推送

      3.很多時候我們只能使用輪詢的方式進行數(shù)據(jù)展示的更新和消息推送。于是就想到有沒有一種方式可以完成服務端數(shù)據(jù)更新時同步更新客戶端的一種解決方案。

      二.開始部署一個 SignalR項目【使用mvc】

      1.新建mvc項目

      .....................

      2.導入程序包【Vs2015】

      工具->NuGet包管理器-> 程序包管理控制臺->Install-Package Microsoft.AspNet.SignalR->等待安裝成功

      3.新建集線器類

      項目->右鍵->添加->新建項->SignalR->SignalR 永久鏈接類->保存->【以MyConnection1為例】MyConnection1

       public class MyConnection1 : PersistentConnection
        {
          /// 
          /// 發(fā)送消息
          /// 
          /// 
          /// 
          /// 
          protected override Task OnConnected(IRequest request, string connectionId)
          {
            Debug.WriteLine(connectionId);
            return Connection.Send(connectionId, "Welcome!");//單推事列
          }
      
          /// 
          /// 接受客戶端消息
          /// 
          /// 
          /// 
          /// 
          /// 
          protected override Task OnReceived(IRequest request, string connectionId, string data)
          {
            Debug.WriteLine(data);
            return Connection.Broadcast(data);//廣播
          }
          /// 
          /// 掉線
          /// 
          /// 
          /// 
          /// 
          /// 
          protected override Task OnDisconnected(IRequest request, string connectionId, bool stopCalled)
          {
            Debug.WriteLine("掉線");
            return base.OnDisconnected(request, connectionId, stopCalled);
          }
      
          /// 
          /// 重連
          /// 
          /// 
          /// 
          /// 
          protected override Task OnReconnected(IRequest request, string connectionId)
          {
            Debug.WriteLine("重連");
            return base.OnReconnected(request, connectionId);
          }
        }

      4.新建 Owin Startup 類【SignalR遵循Owin標準,Startup則是組件的啟動,默認會存在Startup類,只需修改即可】

      我們在Configuration里面追加以下代碼

      public void Configuration(IAppBuilder app)
          {
            app.MapSignalR("/myconnection");
          }

      解釋:訪問myconnection的時候,觸發(fā)MyConnection1

      5.增加客戶端【h6】

      @{
        ViewBag.Title = "Home Page";
        Layout = null;
      }
      
      
      
        
        
        
      
      
        
        
        
      
      

      6.啟動項目 打開瀏覽器控制臺,你會發(fā)現(xiàn)見下圖、這就表示你已經(jīng)完成了第一步。

      asp.net中如何使用SignaiR和Push.js完成消息推送

      7.下面我們需要準備 push.js

      下載地址 github.com/Nickersoft/push.js

      8.引用js

      9.新建js推送demo

        function push(data, url, img) {
          var imgurl = img != "" ? img : "../Images/icon.png";
          Push.create("新通知", {
            body: data,
            icon: imgurl,
            requireInteraction: true,
            onClick: function () {
              window.focus();
              this.close();
              window.location.href =url;
            }
          });
        }

      解釋:data:為消息內(nèi)容

      url:為點擊通知進入的鏈接

      img: 為通知展示的圖片地址

      requireInteraction: 設置為true時,除非用戶手動關閉或單擊該通知,否則該通知不會關閉。需要設置消失時間請?zhí)鎿Q該屬性為timeout: 5000 單位毫秒

      其他事件請閱讀:www.npmjs.com/package/push.js

      10.組合兩者

        //實時推送
        var conn = $.connection("/myconnection");
      
        conn.start().done(function (data) {
          console.log("已連接服務器,當前GUID為" + data.id);
        });
      
        //接受服務器的推送
        conn.received(function (msg) {
          console.log("服務器返回消息: " + msg);
          if (msg != "") {
            push(msg, "#", "")
          }
        });

      11.效果如下:

      asp.net中如何使用SignaiR和Push.js完成消息推送

      12.實現(xiàn)服務器的主動推送.現(xiàn)只介紹廣播。單推原理一致。

      分為廣播及單推兩種模式。

      廣播:

       var context = GlobalHost.ConnectionManager.GetConnectionContext();//獲取你當前的Connection連接
        context.Connection.Broadcast("我是一條新的推送消息!");//廣播推送

      單推:

       var context = GlobalHost.ConnectionManager.GetConnectionContext();//獲取你當前的Connection連接
       context.Connection.Send(connectionId, "Welcome!");//單推事列

      connectionId:是服務端為每個客戶端分配的GUID

      asp.net中如何使用SignaiR和Push.js完成消息推送

      13.效果如下:

      asp.net中如何使用SignaiR和Push.js完成消息推送

      這樣當我們服務端處理某個任務時就可以調(diào)用廣播來實現(xiàn)主動推送到客戶端,進行數(shù)據(jù)的即時更新及消息的推送。

      感謝各位的閱讀!關于“asp.net中如何使用SignaiR和Push.js完成消息推送”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


      分享標題:asp.net中如何使用SignaiR和Push.js完成消息推送
      瀏覽地址:http://www.ef60e0e.cn/article/jocsde.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        浦东新区| 和平县| 茶陵县| 海淀区| 上饶县| 砚山县| 丰顺县| 石狮市| 双城市| 武冈市| 鹤庆县| 胶州市| 全州县| 衡阳市| 大同市| 泗洪县| 永泰县| 治多县| 兰州市| 湘潭市| 于都县| 察隅县| 文成县| 易门县| 桦川县| 和平区| 牟定县| 措勤县| 裕民县| 陆良县| 亳州市| 丽水市| 嘉荫县| 拜城县| 张家港市| 德保县| 绵阳市| 营山县| 辽宁省| 五台县| 曲周县|