Skip to content

Repository files navigation

C++ 全栈聊天项目 —— 分布式即时通讯系统

基于 C++ 从零开发的分布式 IM 聊天项目,包含完整的服务端集群与原生 PC 客户端。代码轻量化、不依赖重型框架,非常适合学习 Linux 高并发网络编程、TCP 长连接与分布式服务通信。


📖 项目简介

本项目是一套多服务分布式即时通讯系统,采用 网关 + 微服务 架构,将登录验证、用户状态、消息聊天、网关接入完全拆分解耦。项目纯原生 C++ 实现,不依赖重型第三方网络框架,结构清晰、代码精炼。

项目包含:

  • ✅ 完整后端集群服务(5 个独立微服务)
  • ✅ 原生 PC 客户端
  • ✅ 可直接编译、部署、联机聊天

🛠 技术栈

类别 技术
核心语言 C++11+
编译工具 CMake、Makefile
配置管理 config.ini 配置文件
通信方式 TCP 长连接
架构模式 网关接入 + 业务微服务拆分,支持水平扩容
运行环境 Linux(Ubuntu / CentOS)

🏗 整体服务架构

项目共 5 个后端服务 + 1 个客户端,各司其职,完全解耦:

服务 职责
GateServer 网关服务,客户端唯一对外入口,负责 TCP 连接管理、消息路由、流量收敛、请求转发,屏蔽后端所有业务服务
ChatServer / ChatServer2 聊天服务,核心消息服务,处理用户私聊消息收发与转发。双服务实例设计,支持分布式水平扩容
VarifyServer 验证服务,独立账号鉴权服务,专门处理用户登录校验、身份验证
StatusServer 状态服务,统一管理全局用户在线状态,监听用户上下线事件,提供状态查询与同步能力
chat(客户端) 原生 PC 客户端,实现网关连接、账号登录、实时消息收发、聊天交互等完整前端能力

📁 项目目录结构

chat/
├── ChatServer/          # 主聊天业务服务
├── ChatServer2/         # 扩容聊天服务实例
├── GateServer/          # 网关接入服务
├── StatusServer/        # 用户在线状态服务
├── VarifyServer/        # 账号登录验证服务
├── chat/                # PC 客户端源码
└── README.md            # 项目说明文档

所有服务均独立配置 config.ini,可自定义端口、服务通信地址、运行参数。


⚙️ 编译与运行

环境依赖

  • Linux 系统(Ubuntu / CentOS)
  • gcc / g++ 支持 C++11 及以上
  • CMake、make 编译工具

1. 克隆项目

git clone https://github.com/ljcjclljc/chat.git
cd chat

2. 编译后端服务

以 GateServer 为例,其余服务编译方式一致:

cd GateServer/GateServer
mkdir build && cd build
cmake ..
make -j4

依次编译:ChatServer、ChatServer2、VarifyServer、StatusServer

3. 编译客户端

cd chat
make

4. 服务启动顺序

  1. 修改各服务 config.ini 配置端口与通信地址
  2. 按以下顺序启动服务:
VarifyServer → StatusServer → ChatServer → ChatServer2 → GateServer
  1. 启动客户端,填写网关地址即可登录聊天

✨ 核心功能

  • 独立服务账号登录、身份鉴权
  • TCP 长连接网关统一接入管理
  • 用户一对一实时私聊
  • 多服务分布式扩容,支持高并发在线用户
  • 全局用户在线状态实时同步与监听
  • 全配置化管理,灵活修改服务参数

🌟 项目亮点

  • 架构清晰:网关、鉴权、状态、消息完全解耦,符合分布式 IM 设计思想
  • 可扩展性强:多聊天服务实例支持水平扩容
  • 纯原生实现:无过度封装框架,适合深入学习网络底层原理
  • 前后端完整:服务端集群 + 客户端全套源码,可直接运行演示

🚀 后续拓展方向

  • 接入 MySQL / Redis 实现用户数据、消息持久化
  • 增加 TCP 心跳保活、断线重连、离线消息推送
  • 新增群聊、文件传输、图片消息功能
  • 增加服务注册发现,替代静态 ini 配置
  • 完善日志系统、性能监控与异常处理

📄 开源说明

本项目为学习型开源项目,仅供 C++ 网络编程、分布式 IM 架构学习交流使用。可自由 Fork、修改源码,商用请自行完善稳定性、安全性与高可用能力。


作者:ljcjclljc

仓库地址:https://github.com/ljcjclljc/chat

About

C++全栈聊天项目

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages