LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.NET Core WebSocket實(shí)現(xiàn)簡(jiǎn)易、高性能、集群即時(shí)通訊組件

admin
2023年8月25日 9:15 本文熱度 1240

前言

今天給大家推薦一個(gè).NET Core WebSocket實(shí)現(xiàn)簡(jiǎn)易、高性能、集群即時(shí)通訊組件:FreeIM。

官方組件介紹

FreeIM 使用 WebSocket 協(xié)議實(shí)現(xiàn)簡(jiǎn)易、高性能(單機(jī)支持5萬+連接)、集群即時(shí)通訊組件,支持點(diǎn)對(duì)點(diǎn)通訊、群聊通訊、上線下線事件消息等眾多實(shí)用性功能。

WebSocket介紹

WebSocket是一種在Web應(yīng)用程序和服務(wù)器之間建立持久連接的通信協(xié)議。它通過在客戶端和服務(wù)器之間創(chuàng)建一個(gè)全雙工通信通道,實(shí)現(xiàn)了服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù)的功能。

相比起傳統(tǒng)的HTTP請(qǐng)求-響應(yīng)模式,WebSocket具有以下幾個(gè)優(yōu)勢(shì):

  1. 實(shí)時(shí)性:WebSocket提供了實(shí)時(shí)的雙向通信,服務(wù)器可以主動(dòng)推送數(shù)據(jù)給客戶端,而不需要客戶端發(fā)起請(qǐng)求。這使得實(shí)時(shí)通信應(yīng)用如聊天室、股票行情等變得更加簡(jiǎn)單和高效。

  2. 減少數(shù)據(jù)傳輸量:WebSocket在建立連接時(shí)需要進(jìn)行握手,之后數(shù)據(jù)幀的開銷較小,只需要發(fā)送少量的控制信息,因此相比于HTTP請(qǐng)求的頭部信息,可以減少數(shù)據(jù)傳輸?shù)拈_銷。

  3. 低延遲:由于WebSocket是一個(gè)長(zhǎng)連接,避免了每次請(qǐng)求都要建立TCP連接的開銷,從而降低了延遲。

  4. 節(jié)省服務(wù)器資源:WebSocket使用一個(gè)TCP連接進(jìn)行全雙工通信,相比于傳統(tǒng)的HTTP請(qǐng)求,避免了頻繁的連接和關(guān)閉操作,減少了服務(wù)器的負(fù)擔(dān)。

  5. 支持跨域通信:WebSocket允許在瀏覽器中通過Javascript與不同域名下的服務(wù)器進(jìn)行通信,實(shí)現(xiàn)了跨域通信的功能。

項(xiàng)目源碼截圖

 

設(shè)計(jì)思路

終端(如瀏覽器/小程序/iOS/android) 統(tǒng)一使用 websocket 連接 ImServer

ImServer(支持集群)根據(jù) clientId 分區(qū)管理 websocket 連接;

WebApi 使用 ImHelper 調(diào)用方法(如:SendMessage、群聊相關(guān)方法),將數(shù)據(jù)推至 Redis chan;

ImServer 訂閱 Redis chan,收到消息后向 終端 推送消息;

  • 緩解了并發(fā)推送消息過多的問題;
  • 解決了連接數(shù)過多的問題;
  • 解耦了業(yè)務(wù)和通訊,架構(gòu)更加清淅;
    • ImServer 充當(dāng)消息轉(zhuǎn)發(fā),連接維護(hù),代碼萬年不變、且不需要重啟維護(hù)
    • WebApi 負(fù)責(zé)所有業(yè)務(wù)

ImServer 服務(wù)端

public void Configure(IApplicationBuilder app)
{
    app.UseFreeImServer(new ImServerOptions
    {
        Redis = new FreeRedis.RedisClient("127.0.0.1:6379,poolsize=5"),
        Servers = new[] { "127.0.0.1:6001" }, //集群配置
        Server = "127.0.0.1:6001"
    });
}

WebApi 業(yè)務(wù)端

public void Configure(IApplicationBuilder app)
{
    //...

    ImHelper.Initialization(new ImClientOptions
    {
        Redis = new FreeRedis.RedisClient("127.0.0.1:6379,poolsize=5"),
        Servers = new[] { "127.0.0.1:6001" }
    });

    ImHelper.EventBus(
        t => Console.WriteLine(t.clientId + "上線了"), 
        t => Console.WriteLine(t.clientId + "下線了"));
}

Html5 終端

終端連接 websocket 前,應(yīng)該先請(qǐng)求 WebApi 獲得授權(quán)過的地址(ImHelper.PrevConnectServer),偽代碼:

ajax('/prev-connect-imserver', function(data) {
    var url = data; //此時(shí)的值:ws://127.0.0.1:6001/ws?token=xxxxx
    var sock = new WebSocket(url);
    sock.onmessage = function (e) {
        //...
    };
})

項(xiàng)目源碼

更多實(shí)用功能特性歡迎前往開源地址查看👀,別忘了給項(xiàng)目一個(gè)Star💖。

https://github.com/2881099/FreeIM



該文章在 2023/8/25 9:15:31 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日本三级手机在线播放线观看 | 日本最新免费二区三区在线观看 | 五月婷婷亚洲综合色色 | 熟女作爱一区二区视频 | 中文字幕亚洲一区一区 | 亚洲欧美国产va在线播放频 |