一、引言
前面一篇文章我介紹了如何使用SignalR實(shí)現(xiàn)圖片的傳輸,然后對(duì)于即時(shí)通訊應(yīng)用來(lái)說(shuō),消息提醒是必不可少的?,F(xiàn)在很多網(wǎng)站的都有新消息的提醒功能。自然對(duì)于SignalR系列也少不了這個(gè)功能的實(shí)現(xiàn)了。在這篇文章中將介紹如何使用SignalR+iNotify庫(kù)來(lái)實(shí)現(xiàn)新消息的聲音和彈框提醒。
二、消息提醒的實(shí)現(xiàn)思路
消息提醒也就是當(dāng)客戶有新消息來(lái)時(shí),在客戶端的右下角進(jìn)行彈框提醒。要實(shí)現(xiàn)這個(gè)功能的思路是:
1、SignalR服務(wù)端推送消息到客戶端的實(shí)現(xiàn)方式為調(diào)用客戶端的receiveMessage方法來(lái)將消息附加到聊天記錄內(nèi),所以我們可以在客戶端的receiveMessage方法中實(shí)現(xiàn)彈框的邏輯。
2、找好了方法定義的位置后,自然是去找一個(gè)比較好的彈框效果JS類庫(kù)了,這里使用的是iNotify庫(kù)來(lái)實(shí)現(xiàn)的。該庫(kù)的github地址為:https://github.com/jaywcjlove/iNotify,在線測(cè)試地址為:http://jslite.io/iNotify/
3、你看QQ或者微信的消息提醒,消息提醒一般是在你不在聊天的當(dāng)前Tab頁(yè)面才會(huì)彈出,我們可以利用Html5 visibilitychange事件來(lái)實(shí)現(xiàn),不過(guò)我這里是通過(guò)失焦點(diǎn)的方式,也就是focus事件。
三、具體實(shí)現(xiàn)代碼
這里實(shí)現(xiàn)的具體實(shí)現(xiàn)代碼是以第二篇文章的代碼為基礎(chǔ),在其基礎(chǔ)上添加消息提醒的JS代碼。
這里需要先在Index.cshtml頁(yè)面引入INotify庫(kù)的JS文件。即:
script type="text/javascript" src="~/Scripts/jquery-1.10.2.min.js">/script> script src="~/Scripts/jquery.signalR-2.2.0.min.js">/script> script src="~/signalr/hubs">/script> script src="~/Scripts/layer/layer.min.js">/script> script src="~/Scripts/iNotify.js">/script>
然后將下面JS代碼加入到receivePrivateMessage方法內(nèi)
var active = true; window.onfocus = window.onblur = function(e) { active = (e || event).type === "focus"; }; // 接收消息 systemHub.client.receivePrivateMessage = function(fromUserId, userName, message) { // 專題二中的代碼 // 消息提醒的代碼 if (active == false) { var iN = new iNotify({ effect: 'flash', interval: 500, audio: { file: ['/Music/msg.mp3'] }, notification: { title: "通知!", body: '您有一條新消息' } }); iN.setTitle(true).player(); iN.setFavicon(true).setTitle(true).notify(); } }; }
經(jīng)過(guò)上面的2步,新消息聲音和彈框提醒就完成了,但是這個(gè)彈框功能不支持IE瀏覽器,因?yàn)閺椏蛐Ч褂玫腍tml5 Notifination API 來(lái)實(shí)現(xiàn)的,這個(gè)特性在IE瀏覽器中不支持,所以也就不能實(shí)現(xiàn)了。從而可以看出微軟的IE瀏覽器真是一個(gè)坑啊,所以微軟果斷放棄它,推出Edge,Edge具體怎么我自己沒(méi)有試驗(yàn)過(guò),不過(guò)很多朋友評(píng)論說(shuō)仍然是個(gè)坑。
接下來(lái)讓我們看看具體的運(yùn)行效果吧。
源碼下載:使用SignalR實(shí)現(xiàn)消息提醒
到此,本篇文章的內(nèi)容就結(jié)束到此。本篇博文之后,SignalR系列也就告一段落了,謝謝大家的閱讀。
標(biāo)簽:宜春 重慶 汕頭 本溪 吉林 河南 婁底 麗江
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Asp.net使用SignalR實(shí)現(xiàn)消息提醒》,本文關(guān)鍵詞 Asp.net,使用,SignalR,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。