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