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)
- antispam
- 消息推送提醒(系统通知栏消息提醒)
- 消息转发
- 网络连接状态
- 图片管理器
- 查找聊天记录
- 消息同步缓存
- 会话同步缓存
- 头像同步缓存
- 未读计数桌面角标
- 免打扰模式
- 图片压缩
- 阅后即焚
- 撤回
- 正在输入
- 已读回执(用户发送消息,获取对方是否已读状态 )
- 多终端已读同步(同个产品多终端情况下,同步消息已读未读的状态)
- 端到端加密
- 高清语音消息
- 文件上传下载
- 语音通话(声网FlutterSDK)
- 视频通话
- electron 跨平台桌面客户端
- flutter 跨平台移动端
- swift/iOS 客户端+SDK
- kotlin/Android 客户端+SDK
- vue/Web 客户端+SDK
- 客服会话
- 欢迎语
- 自动分配在线客服
- 客服正在输入提醒
- 回头客
- AnyQ 百度开源 FAQ 问答系统接入
- 图灵机器人接入
- 小爱机器人接入
- 思知机器人接入
- 微信机器人接入
See More architecture
PS:请切换到master分支,编译和运行!
目前仅支持 Flutter 客户端,在 ios11 模拟器下测试通过。仅测试了登录登出、单聊、发文本、未读消息计数等功能。
cd client/cc_flutter_app
flutter pub get
- 点击 Open IOS Simulator,等待模拟器启动
- 点击 Run 图标
golang 的包管理工具使用的 dep,相关依赖都已经提交到 github,所以可以直接 build。
2020.04.20 更新:使用go mod包管理工具代替dep。
- 安装golang(推荐go1.13以上,安装方法请以 官网 为准)
$ brew isntall golang # 安装go
$ vim ~/.bash_profile # 设置go环境变量
export GOROOT=/usr/local/Cellar/go/1.16.3/libexec
# 自go1.13默认启用go mod后,GOPATH可以不在配置
#export GOPATH="/Users/xmcy0011/repo/go" # 使用go mod后,代码不能存放到gopath下,请注意。
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN:$GOPATH/bin
$ source ~/.bash_profile # 生效
$ go env # 确认goroot和gopath正确
$ unset GOPROXY # go mod有些包拉不下来,可以配置GOPROXY。但是,对go get无效😭
$ go env -w GOPROXY=https://goproxy.cn,direct
- git clone
$ cd /Users/xmcy0011/repo #注意不是gopath路径!
$ mkdir github
$ cd github
$ git clone https://github.com/xmcy0011/CoffeeChat.git
- build & run
- 手工方式
# gate 网关服务编译
$ cd server/src/app/im_gate
$ go build -v
$ ./im_gate -conf=./gate-example.toml
# logic 逻辑服务编译
$ cd server/src/app/im_logic
$ go build -v
$ ./im_logic -conf=./logic-example.toml
- 使用脚本
$ cd server/src
$ chmod 777 build.sh
# 编译并打包
$ ./build.sh version 2021-04-20
# 解压,通过./restart.sh ./stop.sh等脚本启动和停止服务
$ tar -zxvf coffeechat.2021-04-20.tar.gz
email:[email protected]
CoffeeChat is provided under the mit license.