Skip to content

killsime/IM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

概述

主要是基于Epoll的聊天服务器,兼容cpp11标准

服务器结构

类的关系如下

IMServer.png

整体架构

主要分为两层,网络层和业务层

网络层的核心是EventLoop,负责统领消息的收发

业务层的核心是MsgHandler,负责处理消息,因为是demo,所以比较简单

消息传输

通过线程安全消息队列MQ,起两个专门用于收发的线程

接收消息的线程与Epoll搭配使用,解包后,根据类型转化成不同的Message,然后将接收的消息预处理之后,加入接收消息队列

这里的预处理主要是对登陆和心跳包进行处理,用于维护长连接

发送消息的线程不断循环检测发送消息队列,封包后,以二进制形式传输

消息处理

MsgHandler负责所有消息的分发处理,现目前demo阶段,处理直接就在这个类中完成

根据维护的长连接,进行检测是否活跃,并将消息发送

这里如果对方不在线,可以扩展功能,将消息持久化进数据库,用户上线后拉取

文件传输

基于封装的Socket和兼容cpp11的路径处理FileUtils来实现文件传输

后续可以实现断点续传功能

客户端结构

ConsoleUI.hpp作为客户端的控制台ui,

NetworkClient.hpp作为客户端与服务端沟通的桥梁

其他代码直接复用服务端的代码

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published