網(wǎng)頁在線聊天代碼(在線網(wǎng)頁聊天工具)
前言
給大家推薦一個.NET Core WebSocket實現(xiàn)簡易、高性能、集群即時通訊組件:FreeIM。
官方組件介紹
FreeIM 使用 WebSocket 協(xié)議實現(xiàn)簡易、高性能(單機支持5萬+連接)、集群即時通訊組件,支持點對點通訊、群聊通訊、上線下線事件消息等眾多實用性功能。
WebSocket介紹
WebSocket是一種在Web應(yīng)用程序和服務(wù)器之間建立持久連接的通信協(xié)議。它通過在客戶端和服務(wù)器之間創(chuàng)建一個全雙工通信通道,實現(xiàn)了服務(wù)器主動向客戶端推送數(shù)據(jù)的功能。相比起傳統(tǒng)的HTTP請求-響應(yīng)模式,WebSocket具有以下幾個優(yōu)勢:
實時性:WebSocket提供了實時的雙向通信,服務(wù)器可以主動推送數(shù)據(jù)給客戶端,而不需要客戶端發(fā)起請求。這使得實時通信應(yīng)用如聊天室、股票行情等變得更加簡單和高效。
減少數(shù)據(jù)傳輸量:WebSocket在建立連接時需要進行握手,之后數(shù)據(jù)幀的開銷較小,只需要發(fā)送少量的控制信息,因此相比于HTTP請求的頭部信息,可以減少數(shù)據(jù)傳輸?shù)拈_銷。
低延遲:由于WebSocket是一個長連接,避免了每次請求都要建立TCP連接的開銷,從而降低了延遲。
節(jié)省服務(wù)器資源:WebSocket使用一個TCP連接進行全雙工通信,相比于傳統(tǒng)的HTTP請求,避免了頻繁的連接和關(guān)閉操作,減少了服務(wù)器的負擔。
支持跨域通信:WebSocket允許在瀏覽器中通過Java與不同域名下的服務(wù)器進行通信,實現(xiàn)了跨域通信的功能。
項目源碼截圖
設(shè)計思路
終端(如瀏覽器/小程序/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充當消息轉(zhuǎn)發(fā),連接維護,代碼萬年不變、且不需要重啟維護
WebApi負責(zé)所有業(yè)務(wù)
ImServer 服務(wù)端
publicvoidConfigure(IApplicationBuilder app)
展開全文
{
app.UseFreeImServer( newImServerOptions
{
Redis = newFreeRedis.RedisClient( "127.0.0.1:6379,poolsize=5"),
Servers = new[] { "127.0.0.1:6001"}, //集群配置
Server = "127.0.0.1:6001"
});
}
WebApi 業(yè)務(wù)端publicvoidConfigure(IApplicationBuilder app)
{
//...
ImHelper.Initialization( newImClientOptions
{
Redis = newFreeRedis.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)該先請求 WebApi 獲得授權(quán)過的地址(ImHelper.PrevConnectServer),偽代碼:
ajax( '/prev-connect-imserver', function(data) {
varurl = data; //此時的值:ws://127.0.0.1:6001/ws?token=xxxxx
varsock = newWebSocket(url);
sock.onmessage = function (e) {
//...
};
})
項目源碼
https://github.com/2881099/FreeIM
- EOF -
點擊標題可跳轉(zhuǎn)
C# 解壓縮開源庫,輕松完成解壓縮文件
.NET 7+Vue 前后端分離框架Admin.Core
C# 中如何使用BCrypt 提高用戶密碼安全性
看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人
推薦關(guān)注「DotNet」,提升.Net技能
點贊和在看就是最大的支持??
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。