CoffeeChat
CoffeeChat copied to clipboard
opensource im with server(go) and client(flutter+swift)
CoffeeChat
opensource im with server(go) and client(flutter+swift)
⚠️⚠️Warnning⚠️⚠️ 持续开发中,仅适合学习使用。
News
有网友在Issues询问后续更新一事,这里回复一下:
今年事情比较多,所以进展十分缓慢,会不会放弃这个项目我也不能肯定,主要是作者精力有限,请大家原谅。发起这个项目的初衷,是为了更深入的学习IM服务端开发,如果有更好的开源go语言实现的im项目,我可能会考虑作为Contributor参与其中。
最后,放出最近的一些动态以感谢大家的关心。
最新动态:
- 至今: 生命不息,探索不止💪💪
- 2022/07/01: 目前正在开发v2架构(基于kratos v2框架),总体设计由pb+tcp变更为http+json接口方式,降低上手成本。考虑到自由度和方便体验,目前正在开发android app。
- ~~2022/04/10:制定Monthly Release计划,每个月至少要保证一次Release~~
- 2021/08: 作者最近在考虑跳槽,故精力主要放在研究OpenIM,学习Kafka,微服务,收件箱,Etcd,Docker,K8S等使用,提升技术深度。
- 2021/03 - 07: 开发QT客户端和C++跨平台SDK,受限于精力进展缓慢。
- 2021/02: 使用sketch设计win+mac客户端界面。
总结:
-
2022
: 再出发,学习android + kratos + k8s,实现go服务端v2版本重构 -
2021
: 主要精力在探索百万级的架构,C++跨平台SDK,QT,Go微服务,Docker,Etcd等等,coffeechat几乎没有更新 -
2020
: 这一年coffeechat不断完善,作者主要在学习ios开发,实现简单ios app -
2019/08
: coffeechat诞生,学习flutter,实现简单flutter客户端,后续因为flutter聊天界面下拉感觉效果不理想放弃
Client
支持的客户端有:
-
开发中(V2)
-
Android: 基于android 7.0 + java实现,目前正在开发中(2022年8月),适用于
V2版本
服务端。
-
Android: 基于android 7.0 + java实现,目前正在开发中(2022年8月),适用于
-
暂停中(V1)
请点击对应的链接查看详情。
Preview
flutter
see CoffeeChat-Flutter 暂不维护,仅供参考。
swift
Features
设计
- [x] 架构设计:参考瓜子 IM
- [x] 协议设计:参考网易云 IM、环信、TeamTalk
- [x] 数据库设计
- [x] 消息分表存储设计
- [x] IM 消息 ID 生成设计
单聊群聊
- [x] flutter 客户端
- [x] 单聊
- [x] 消息格式
- [x] 文本
- [ ] 表情
- [ ] 图片
- [x] 会话列表
- [x] 消息存储
- [x] 历史消息
- [x] 漫游消息(用户切换到任何设备都可以读取到最近的历史消息)
- [ ] 离线消息(用户离线重新上线后收到最近 30 天的未读消息)
- [x] 未读消息计数
- [ ] 消息推送(APNS)
- [ ] 群聊
- [ ] 群最高人数:200
- [ ] 群管理:群主、加人、踢人
- [ ] 群消息免打扰
- [ ] 群成员管理
服务端特有
- [ ] consul注册中心
- [ ] 分布式配置(nacos、etcd...)
- [x] dockerfile & docker compose
- [ ] admin后台和web界面,简化安装(参考wordpress)
客户端特有
- [ ] 消息推送提醒(系统通知栏消息提醒)
- [ ] 消息转发
- [ ] 网络连接状态
- [ ] 图片管理器
- [ ] 查找聊天记录
- [ ] 消息同步缓存
- [x] 会话同步缓存
- [ ] 头像同步缓存
- [ ] 未读计数桌面角标
- [ ] 免打扰模式
- [ ] 图片压缩
特色功能
- [ ] 阅后即焚
- [ ] 撤回
- [ ] 正在输入
- [ ] 已读回执(用户发送消息,获取对方是否已读状态 )
- [ ] 多终端已读同步(同个产品多终端情况下,同步消息已读未读的状态)
- [ ] 端到端加密
- [ ] 高清语音消息
- [ ] 文件上传下载
- [x] 语音通话(声网FlutterSDK)
- [ ] 视频通话
- [ ] electron 跨平台桌面客户端
- [x] flutter 跨平台移动端
- [ ] swift/iOS 客户端+SDK
聊天机器人功能
- [ ] 图灵机器人接入
- [ ] 小爱机器人接入
- [x] 思知机器人接入
- [x] 微信机器人接入
Architecture
模块架构:
单聊模块交互图:
See More architecture
Quick Start
PS:请切换到master分支,编译和运行!
- 启动Server(要求安装docker desktop >= 4.0.1):
$ git clone https://github.com/xmcy0011/CoffeeChat.git
$ cd CoffeeChat/server
# 从代码编译docker镜像,安装mysql,redis等依赖,并自动初始化mysql数据
$ docker-compose up -d
- 编译客户端。推荐iOS客户端(模拟器选择iphone 11),请移步:client
- iOS模拟器和app启动后,点击“注册”,更改服务器IP地址为本机IP(不需要输入端口),注册成功后,登录即可。
- 内置了2个机器人(思知和微信)和3个好友,可以测试聊天功能。
更多细节,请移步:
停止:
$ cd CoffeeChat/server
$ docker-compose down -v
Document
更多文章请移步:
Thinks
- mattermost:主要学习其go工程实践方面的一些技巧,目前还处在研究阶段。
- Open-IM-Server:通过分析它的架构和代码,理解了收件箱机制和im 微服务(go)的划分实践。
- goim:学习到百万级架构下kafka是如何应用在聊天室场景的。
- Terry-Ye/im:结合goim,理解了所谓的job含义,看懂了goim的架构。
- gim:一个简单的写扩散项目,可以更深入理解写扩散的架构和原理。
更多开源im,请移步:史上最全开源IM盘点
Contact
email:[email protected]
微信交流:xuyc1992(请备注:im)
喜欢的话,关注下公众号吧😊
《Go和分布式IM》👈👈
LICENSE
CoffeeChat is provided under the mit license.