通過SignalR技術整合即時通訊(IM)在.NET中應用落地

img

1、引言

即時通訊(IM)是RDIFramework.NET敏捷開發框架全新提供的一個基於Web的即時通訊、內部聊天溝通的工具。介面美觀大方對於框架內部進行消息的溝通非常方便。基於RDIFramework.NET敏捷開發框架的即時通訊IM支援常規的用戶對用戶(點對點)聊天、工作流程流轉的提醒、服務端消息的推送等。消息到達還有類似QQ的聲音提醒,同時對消息進行了持久化處理,即時離線的用戶,上線後也會收到消息,不會造成消息的丟失。還提供了很多擴展介面供用戶實際擴展使用,非常的強大,方便。

通過「企業內部聊天IM」我們可以擴展很多應用出來。這兒特別說明的是我們的IM使用的是SignalR技術。.NET SignalR 是為.NET 開發人員提供的一個庫,可以簡化開發人員將實時 Web 功能添加到應用程式的過程。實時 Web 功能是指這樣一種功能:當所連接的客戶端變得可用時伺服器程式碼可以立即向其推送內容,而不是讓伺服器等待客戶端請求新的數據。什麼是實時通訊的Web呢?就是讓客戶端(Web頁面)和伺服器端可以互相通知消息及調用方法,當然這是實時操作的。SignalR提供了非常簡單易用的高階API,使伺服器端可以單個或批量調用客戶端上的JavaScript函數,並且非常方便地進行連接管理,例如客戶端連接到伺服器端,或斷開連接,客戶端分組,以及客戶端授權,使用SignalR都非常 容易實現。

體系結構關係圖

2、什麼是SignalR

ASP.NET SignalR 是 ASP.NET 開發人員的庫,可簡化將實時 web 功能添加到應用程式的過程。 實時 web 功能使伺服器程式碼能夠在可用時立即將內容推送到連接的客戶端,而不是讓伺服器等待客戶端請求新的數據。

SignalR 可用於將任何種類的 “實時” web 功能添加到 ASP.NET 應用程式。 儘管聊天通常用作示例,但你可以執行更多操作。 用戶每次刷新網頁以查看新數據,或者頁面實現 長輪詢 來檢索新數據時,都是使用 SignalR 的候選項。 示例包括儀錶板和監視應用程式、協作應用程式 (例如同步編輯文檔) 、作業進度更新和實時窗體。

SignalR 還啟用了全新類型的 web 應用程式,這些應用程式需要伺服器中的高頻率更新,例如,實時遊戲。

SignalR 提供了一個簡單的 API,用於創建 (RPC) 的伺服器到客戶端遠程過程調用,該程式調用客戶端瀏覽器中的 JavaScript 函數 (和從伺服器端 .NET 程式碼) 的其他客戶端平台。 SignalR 還包括用於連接管理的 API (例如,連接和斷開連接事件) ,以及對連接進行分組。

image-20210207110551451

SignalR 自動處理連接管理,讓你可同時向所有連接的客戶端廣播消息,就像聊天室一樣。 也可以向特定客戶端發送消息。 客戶端和伺服器之間的連接是持久的,不同於傳統的 HTTP 連接,後者針對每次通訊重新建立。

SignalR 支援 “伺服器推送” 功能,在該功能中,伺服器程式碼可以使用遠程過程調用來調用瀏覽器中的客戶端程式碼 (RPC) ,而不是目前在 web 上通用的請求-響應模式。

使用內置和第三方橫向擴展提供程式,SignalR 應用程式可以向外擴展到數千個客戶端。

3、SignalR技術核心

SignalR技術主要用途:它出現的主要目的是實現伺服器主動推送(Push)消息到客戶端頁面,這樣客戶端就不必重新發送請求或使用輪詢技術來獲取消息。可以用在聊天室、看板、單點通訊、多點通訊,甚至可以結合其他技術用來做影片聊天,當然也有其他用途。

SignalR實現機制:SignalR 的實現機制與 .NET WCF是相似的,都是使用遠程代理來實現。在具體使用上,有兩種不同目的的介面:PersistentConnection 和 Hubs,其中 PersistentConnection 是實現了長時間的 JavaScript 輪詢(類似於 Comet),Hub 是用來解決實時資訊交換問題,它是利用 Javascript 動態載入執行方法實現的。SignalR 將整個連接,資訊交換過程封裝得非常漂亮,客戶端與伺服器端全部使用 JSON 來交換數據。

基本流程圖:

SignalR基本流程

4、功能展示

即時通訊(IM)包含SignalR服務端,我們內部聊天IM的服務端如下圖所示,要使用IM,必須要先啟動服務端。

image-20210207105259939

登錄框架後在主介面右下解會顯示即時通訊(IM)的圖標,不佔用用戶的介面空間。有新資訊帶來時圖標會自動閃爍,同時會有聲音提醒非常的方便,類似QQ一樣。

image-20210207105516303

單擊圖標會顯示企業內部聊天IM主介面,如下圖所示。在IM介面按部門對用戶進行了分組的展示。

image-20210207105636235

在線用戶會高亮顯示,如下圖所示。

image-20210207105649706

雙擊一個用戶,即可給指定用戶發送資訊,聊天介面如下圖所示:

image-20210207105752123

在上圖中,我們給「陳俊熙」發了一條消息,我們現在以」wikstone」陳俊熙用戶登錄框架,登錄成功會自動提示消息,如下圖所示:

image-20210207105923956

image-20210207105856196

在彈出的聊天窗口,我們也可以給發送消息的用戶直接回復。

「企業內部聊天IM」不僅可以做為簡單的聊天工具,同時在業務協同辦公過程中也有很好的支援,如:當用戶收到一個待辦業務時,IM也會自動進行帶聲音的提示,如下圖所示。

image-20210207110214424

5、參考文章

5.1、SignalR開發相關

5.2、框架相關


一路走來數個年頭,感謝RDIFramework.NET框架的支援者與使用者,大家可以通過下面的地址了解詳情。

RDIFramework.NET官方網站://www.rdiframework.net/

RDIFramework.NET官方部落格://blog.rdiframework.net/

特別說明,框架相關的技術文章請以官方網站為準,歡迎大家收藏!

RDIFramework.NET框架由海南國思軟體科技有限公司專業團隊長期打造、一直在更新、一直在升級,請放心使用!

歡迎關注RDIFramework.NET框架官方微信公眾號(微訊號:guosisoft),及時了解最新動態。

使用微信掃描二維碼立即關注

微信二維碼