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

.NET快速開發框架發表於2021-02-07

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官方網站:http://www.rdiframework.net/

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

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

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

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

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

微信二維碼

相關文章