前言
首先讲讲IM(即时通讯)技术可以用来做什么:
- 聊天:qq、微信
- 直播:斗鱼直播、抖音
- 实时位置共享、游戏多人互动等等
可以说几乎所有高实时性的应用场景都需要用到IM技术。
关于即时通讯架构的相关视频讲解:qq微信背后的即时通讯技术细节,方案选择
C/C++Linux后台服务器开发免费学习地址:C/C++Linux服务器开发高级架构师/Linux后台架构师
本篇将带大家从零开始搭建一个轻量级的IM服务端,麻雀虽小,五脏俱全,我们搭建的IM服务端实现以下功能:
- 一对一的文本消息、文件消息通信
- 每个消息有“已发送”/“已送达”/“已读”回执
- 存储离线消息
- 支持用户登录,好友关系等基本功能。
- 能够方便地水平扩展
这个项目涵盖了很多后端必备知识:
- rpc通信
- 数据库
- 缓存
- 消息队列
- 分布式、高并发的架构设计
- docker部署
消息通信
文本消息
我们先从最简单的特性开始实现:一个普通消息的发送
消息格式如下:
message ChatMsg{
id = 1;
//消息id
fromId = Alice
//发送者userId
destId = Bob
//接收者userId
msgBody = hello
//消息体
}