国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于muduo網(wǎng)絡(luò)庫實現(xiàn)的集群聊天服務(wù)器

這篇具有很好參考價值的文章主要介紹了基于muduo網(wǎng)絡(luò)庫實現(xiàn)的集群聊天服務(wù)器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?。?!項目是照著騰訊課堂施磊老師的視頻學(xué)習(xí),僅供個人學(xué)習(xí)記錄使用?。?!
?。。№椖渴钦罩v訊課堂施磊老師的視頻學(xué)習(xí),僅供個人學(xué)習(xí)記錄使用?。?!
!??!項目是照著騰訊課堂施磊老師的視頻學(xué)習(xí),僅供個人學(xué)習(xí)記錄使用!?。?/strong>

項目內(nèi)容

使用muduo網(wǎng)絡(luò)庫搭建網(wǎng)絡(luò)核心模塊、Nginx實現(xiàn)聊天服務(wù)器的集群,提高并發(fā)能力、Redis作為消息中間件、MySQL作為數(shù)據(jù)存儲、json序列化和反序列化作為通信協(xié)議的實時聊天服務(wù)器。

開發(fā)環(huán)境

Centos 7 + VsCode遠程Linux開發(fā)、Cmake構(gòu)建、Linux Shell輸出項目編譯腳本

安裝說明

1、Linux下安裝Nginx并配置Tcp負載均衡
2、Linux下安裝MySQL
3、Linux下安裝Redis
4、安裝CMake

技術(shù)介紹

1、使用muduo網(wǎng)絡(luò)庫作為項目的網(wǎng)絡(luò)核心模塊,提供高并發(fā)網(wǎng)絡(luò)IO服務(wù),解耦網(wǎng)絡(luò)和業(yè)務(wù)模塊代碼;

2、使用json序列化和反序列化消息作為私有通信協(xié)議;

3、配置nginx基于tcp的負載均衡,實現(xiàn)聊天服務(wù)器的集群功能,提高后端服務(wù)的并發(fā)能力;

4、基于redis的發(fā)布-訂閱功能,實現(xiàn)跨服務(wù)器的消息通信;

5、使用mysql關(guān)系型數(shù)據(jù)庫作為項目數(shù)據(jù)的落地存儲;

6、使用連接池提高數(shù)據(jù)庫的數(shù)據(jù)存取功能。

項目目錄

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

  • autobuild.sh:一鍵編譯腳本
  • chat.sql:創(chuàng)建數(shù)據(jù)庫表的sql腳本
  • bin:存放服務(wù)器和客戶端的可執(zhí)行程序
  • build:cmake編譯生成的臨時文件
  • CMakeLists.txt:項目使用cmake作為編譯環(huán)境
  • include:項目的頭文件
  • src:項目的源文件
  • test:muduo網(wǎng)絡(luò)庫使用的demo和json序列化和反序列化的demo
  • thirdparty:存放json.hpp

數(shù)據(jù)庫設(shè)計

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

項目介紹

功能分為:登錄賬號、注冊賬號、退出賬號、一對一聊天業(yè)務(wù)、創(chuàng)建群聊業(yè)務(wù)、加入群聊業(yè)務(wù)、群內(nèi)發(fā)消息業(yè)務(wù)、添加好友業(yè)務(wù)、離線消息存儲業(yè)務(wù)。

特別說明:以下示例已經(jīng)啟動Nginx和redis-server,Nginx集群了兩臺服務(wù)器,端口分別為6000、6002。

啟動服務(wù)器

這里啟動兩臺服務(wù)器,因為Nginx配置tcp負載均衡時配置了兩臺。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginxmuduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

啟動客戶端

同樣啟動兩臺客戶端進行聊天業(yè)務(wù)。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

注冊賬號

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

wang wu用戶注冊成功,他的用戶id為3,登錄時通過用戶id去登錄。

登錄成功

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

兩臺客戶端分別登錄了兩個用戶,用戶id分別為1和3,可以看到用戶id為1的用戶已經(jīng)添加了好友和群聊,但是id為3的用戶還沒有添加任何好友和群聊。

一對一聊天業(yè)務(wù)

現(xiàn)在進行id=3和id=1之間聊天,不是好友也可以互相聊天。

一對一聊天的命令行輸入為:chat:用戶id:內(nèi)容
muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

創(chuàng)建群聊業(yè)務(wù)

創(chuàng)建群聊的命令行:creategroup:群聊名:群聊描述

創(chuàng)建群聊的人權(quán)限為創(chuàng)建者。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
可以看到,數(shù)據(jù)庫里群聊已經(jīng)創(chuàng)建成功,群聊id為2,userid=3的用戶在groupid=2的群里的權(quán)限為創(chuàng)建者。

加入群聊業(yè)務(wù)

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

userid=1的用戶加入groupid=2的群,他的權(quán)限為普通權(quán)限。

群聊業(yè)務(wù)

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginxuserid=3的用戶在groupid=2的群里發(fā)了一條消息,群內(nèi)成員收到了這條消息。

添加好友業(yè)務(wù)

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

可以看到,userid=3的用戶有一個好友,好友id=1,即userid=1的用戶。

離線消息存儲業(yè)務(wù)

現(xiàn)在我們讓userid=3的用戶退出,userid=1的用戶持續(xù)為他發(fā)消息。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
數(shù)據(jù)庫里已經(jīng)存了兩條消息,但是中文亂碼了,不影響結(jié)果。

現(xiàn)在我們讓userid=3的用戶重新登錄。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx
剛剛添加的好友、群聊、離線消息在重新登錄之后都成功顯示出來了。

特殊說明

要使程序成功跑起來,需要在db.cpp的數(shù)據(jù)庫ip和密碼改成自己本機的ip和密碼。

muduo服務(wù)器,個人項目開發(fā),c++,linux,nginx

Gitee地址

https://gitee.com/hnSVN/ChatServerProject文章來源地址http://www.zghlxwxcb.cn/news/detail-858797.html

到了這里,關(guān)于基于muduo網(wǎng)絡(luò)庫實現(xiàn)的集群聊天服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【項目設(shè)計】仿 muduo 庫實現(xiàn) OneThreadOneEventLoop 式并發(fā)服務(wù)器

    【項目設(shè)計】仿 muduo 庫實現(xiàn) OneThreadOneEventLoop 式并發(fā)服務(wù)器

    本項目主要是模仿 muduo 庫實現(xiàn)一個以主從 Reactor 為模型,以 OneThreadOneEventLoop 為事件驅(qū)動的高并發(fā)服務(wù)器組件。通過這個服務(wù)器組件,我們可以簡潔快速的搭建出一個高性能的 TCP 服務(wù)器。并且組件內(nèi)部會提供不同的應(yīng)用層協(xié)議支持,組件使用者可以通過這些協(xié)議快速的完成

    2024年04月23日
    瀏覽(39)
  • 一、C++項目:仿muduo庫實現(xiàn)高性能高并發(fā)服務(wù)器

    一、C++項目:仿muduo庫實現(xiàn)高性能高并發(fā)服務(wù)器

    仿mudou庫one thread oneloop式并發(fā)服務(wù)器實現(xiàn) 仿muduo庫One Thread One Loop式主從Reactor模型實現(xiàn)高并發(fā)服務(wù)器: 通過實現(xiàn)的高并發(fā)服務(wù)器組件,可以簡潔快速的完成一個高性能的服務(wù)器搭建。并且,通過組件內(nèi)提供的不同應(yīng)用層協(xié)議支持,也可以快速完成一個高性能應(yīng)用服務(wù)器的搭建

    2024年02月07日
    瀏覽(34)
  • 仿muduo庫實現(xiàn)one thread one loop式并發(fā)服務(wù)器

    仿muduo庫實現(xiàn)one thread one loop式并發(fā)服務(wù)器

    ? 文章目錄 一、項目簡介 二、項目整體認識 2、1?HTTP服務(wù)器 2、2 Reactor模型 三、預(yù)備知識 3、1 C++11 中的 bind 3、2?簡單的秒級定時任務(wù)實現(xiàn) 3、3?正則庫的簡單使用 3、4?通用類型any類型的實現(xiàn) 四、服務(wù)器功能模塊劃分與實現(xiàn) 4、1 Buffer模塊 4、2 Socket模塊 4、3 Channel模塊 4、

    2024年04月09日
    瀏覽(23)
  • 1.12.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之LoopThreadPool模塊的設(shè)計

    1.線程數(shù)量可配置(0或多個) 2. 對所有的線程進行管理,其實也就是管理0個或多個LoopThread對象! 3. 提供線程分配的功能! 針對LoopThread設(shè)計一個線程池,便于管理。 對所有的LoopThread進行分配和管理! 1.線程數(shù)量可配置(0或多個) 注意事項:在服務(wù)器中,主從Reactor模型是

    2024年02月07日
    瀏覽(17)
  • 1.6.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之channel模塊的設(shè)計

    1.6.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之channel模塊的設(shè)計

    項目完整版在: 1.對監(jiān)控事件的管理 描述符是否可讀 描述符是否可寫 對描述符監(jiān)控可讀 對描述符監(jiān)控可寫 解除可讀事件監(jiān)控 解除可寫事件監(jiān)控 解除所有事件監(jiān)控 2.對監(jiān)控事件觸發(fā)后的處理 設(shè)置對于不同事件的回調(diào)處理函數(shù) 明確觸發(fā)了某個事件該如何處理 對socket套接字的

    2024年02月08日
    瀏覽(46)
  • 1.5.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之socket模塊的設(shè)計

    1.5.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之socket模塊的設(shè)計

    項目完整版在: Socket模塊是對套接字操作封裝的一個模塊,主要實現(xiàn)的socket的各項操作。 對socket套接字的操作進行封裝。 對socket套接字的操作進行封裝。 創(chuàng)建套接字 綁定地址信息 開始監(jiān)聽 向服務(wù)器發(fā)起連接 獲取新連接 接受數(shù)據(jù) 發(fā)送數(shù)據(jù) 關(guān)閉套接字 創(chuàng)建一個監(jiān)聽鏈接

    2024年02月07日
    瀏覽(23)
  • 1.9.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之Connection模塊的設(shè)計

    1.9.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之Connection模塊的設(shè)計

    項目完整在: Connection模塊,一個連接有任何的事件怎么處理都是有這個模塊來進行處理的,因為組件的設(shè)計也不知道使用者要如何處理事件,因此只能是提供一些事件回調(diào)函數(shù)由使用者設(shè)置。 發(fā)送數(shù)據(jù) —— 給用戶提供的發(fā)生數(shù)據(jù)的接口,并不是真的發(fā)送接口,而只是把數(shù)

    2024年02月07日
    瀏覽(25)
  • 1.4.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之buffer模塊的設(shè)計

    1.4.C++項目:仿muduo庫實現(xiàn)并發(fā)服務(wù)器之buffer模塊的設(shè)計

    項目完整版在: Buffer模塊是一個緩沖區(qū)模塊,用于實現(xiàn)通信中用戶態(tài)的接收緩沖區(qū)和發(fā)送緩沖區(qū)功能。 存儲數(shù)據(jù),取出數(shù)據(jù) 1.實現(xiàn)換出去得有一塊內(nèi)存空間,采用vector ,vector底層是一個線性的內(nèi)存空間! 1.默認空間大小 2.當(dāng)前的讀取數(shù)據(jù)位置! 3.當(dāng)前的寫入數(shù)據(jù)位置! 寫入

    2024年02月07日
    瀏覽(30)
  • C++集群聊天服務(wù)器 nginx+redis安裝 筆記 (中)

    C++集群聊天服務(wù)器 nginx+redis安裝 筆記 (中)

    一、nginx安裝 nginx: download?下載nginx安裝包 二、redis安裝 Install Redis on Linux | Redis 集群聊天服務(wù)器推薦和參考文章,下文部分文字來自這篇文章: 集群聊天服務(wù)器:三、集群代碼實現(xiàn)_網(wǎng)絡(luò)編程多服務(wù)端集群怎么實現(xiàn)-CSDN博客 https://blog.csdn.net/qq_42441693/article/details/129167974?spm=100

    2024年02月19日
    瀏覽(30)
  • C++項目——集群聊天服務(wù)器項目(九)客戶端異常退出業(yè)務(wù)

    C++項目——集群聊天服務(wù)器項目(九)客戶端異常退出業(yè)務(wù)

    服務(wù)器端應(yīng)檢測到客戶端是否異常退出,因此本節(jié)來實現(xiàn)客戶端異常退出,項目流程見后文 (1)在業(yè)務(wù)模塊定義處理客戶端異常退出的函數(shù) (2)集群聊天服務(wù)器項目(八)提到,哈希表_userConnMap存儲用戶的id和通信連接,若客戶端異常退出,表示該客戶端登錄用戶已經(jīng)下線,

    2024年04月17日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包