opensource im with server(go) and client(flutter+swift)
- 架构设计:参考瓜子 IM
- 协议设计:参考网易云 IM、环信、TeamTalk
- 数据库设计
- 消息分表存储设计
- IM 消息 ID 生成设计
-
flutter 客户端
-
单聊
-
多媒体消息:文本
-
会话列表
-
消息存储
-
历史消息
-
漫游消息(用户切换到任何设备都可以读取到最近的历史消息)
-
离线消息(用户离线重新上线后收到最近 30 天的未读消息)
-
多媒体消息:表情
-
多媒体消息:图片
-
未读消息计数
-
消息推送(APNS)
-
群聊
-
群最高人数:200
-
群管理:群主、加人、踢人
-
群消息免打扰
-
群成员管理
- 负载均衡
- 双机容灾
- 性能压测 Benchmark
- 业务监控
- Redis 集群
- docker
- 阿里云OSS对象存储接入(40GB存储一年7块,每月100GB下行带宽一年200)
- 消息推送提醒(系统通知栏消息提醒)
- 消息转发
- 网络连接状态
- 图片管理器
- 查找聊天记录
- 消息同步缓存
- 会话同步缓存
- 头像同步缓存
- 未读计数桌面角标
- 免打扰模式
- 图片压缩
- 阅后即焚
- 撤回
- 正在输入
- 已读回执(用户发送消息,获取对方是否已读状态 )
- 多终端已读同步(同个产品多终端情况下,同步消息已读未读的状态)
- 端到端加密
- 高清语音消息
- 文件上传下载
- 语音通话(声网FlutterSDK)
- 视频通话
- electron 跨平台桌面客户端
- flutter 跨平台移动端
- swift/iOS 客户端+SDK
- kotlin/Android 客户端+SDK
- vue/Web 客户端+SDK
- 客服会话
- 欢迎语
- 自动分配在线客服
- 客服正在输入提醒
- 回头客
- AnyQ 百度开源 FAQ 问答系统接入
- [] 图灵机器人接入
- [] 小爱机器人接入
- 思知机器人接入
- 微信机器人接入
See More architecture
PS:请切换到release分支,编译和运行!
目前仅支持 Flutter 客户端,在 ios11 模拟器下测试通过。仅测试了登录登出、单聊、发文本、未读消息计数等功能。
cd client/cc_flutter_app
flutter pub get
- 点击 Open IOS Simulator,等待模拟器启动
- 点击 Run 图标
golang 的包管理工具使用的 dep,相关依赖都已经提交到 github,所以可以直接 build。
- golang 环境
brew isntall golang # 安装go
vim ~/.bash_profile # 加入如下配置
export GOROOT=/usr/local/Cellar/go/1.12.5/libexec
export GOPATH="/Users/xuyc/repo/go" # 注意,这里很关键,是你存放代码的路径
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN:$GOROOT/bin
source ~/.bash_profile # 生效
go env # 确认goroot和gopath正确
# git clone
cd /Users/xuyc/repo/go #注意gopath一定要和上面环境变量对应
mkdir -p src/github.com
cd src/github.com
git clone https://github.com/xmcy0011/CoffeeChat.git
- gate 网关服务编译
cd server/src/app/gate
go build
- logic 逻辑服务编译
cd server/src/app/logic
go build
- [可省略,不影响编译] protobuf(google 开源的协议库,以高压缩率、兼容性等出名,中间文件.proto 结尾,使用 protoc 工具可以生成对应代码源文件)
brew install protobuf # 安装
protoc --version # protoc工具,翻译.prot文件为对应的文件
# 安装protobuf的golang插件
go get -u -v github.com/golang/protobuf/proto
go get -u -v github.com/golang/protobuf/protoc-gen-go
# 使用(请跳过该步骤,这里为了演示),把proto翻译成go源文件
# 具体见:pb/build.sh
protoc --go_out=. helloworld.proto
email:[email protected]
CoffeeChat is provided under the mit license.