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 app2019/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
设计
- 架构设计:参考瓜子 IM
- 协议设计:参考网易云 IM、环信、TeamTalk
- 数据库设计
- 消息分表存储设计
- IM 消息 ID 生成设计
单聊群聊
- flutter 客户端
- 单聊
- 消息格式
- 文本
- 表情
- 图片
- 会话列表
- 消息存储
- 历史消息
- 漫游消息(用户切换到任何设备都可以读取到最近的历史消息)
- 离线消息(用户离线重新上线后收到最近 30 天的未读消息)
- 未读消息计数
- 消息推送(APNS)
- 群聊
- 群最高人数:200
- 群管理:群主、加人、踢人
- 群消息免打扰
- 群成员管理
服务端特有
- consul注册中心
- 分布式配置(nacos、etcd...)
- dockerfile & docker compose
- admin后台和web界面,简化安装(参考wordpress)
客户端特有
- 消息推送提醒(系统通知栏消息提醒)
- 消息转发
- 网络连接状态
- 图片管理器
- 查找聊天记录
- 消息同步缓存
- 会话同步缓存
- 头像同步缓存
- 未读计数桌面角标
- 免打扰模式
- 图片压缩
特色功能
- 阅后即焚
- 撤回
- 正在输入
- 已读回执(用户发送消息,获取对方是否已读状态 )
- 多终端已读同步(同个产品多终端情况下,同步消息已读未读的状态)
- 端到端加密
- 高清语音消息
- 文件上传下载
- 语音通话(声网FlutterSDK)
- 视频通话
- electron 跨平台桌面客户端
- flutter 跨平台移动端
- swift/iOS 客户端+SDK
聊天机器人功能
- 图灵机器人接入
- 小爱机器人接入
- 思知机器人接入
- 微信机器人接入
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)
LICENSE
CoffeeChat is provided under the mit license.