All Projects → xmcy0011 → CoffeeChat

xmcy0011 / CoffeeChat

Licence: MIT License
opensource im with server(go) and client(flutter+swift)

Programming Languages

swift
15916 projects
go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to CoffeeChat

Easychatandroidclient
EasyChat是一个开源的社交类的App。主要包含消息、好友、群组等相关的IM核心功能。部分界面参照了QQ、微信等相关社交APP。EasyChat APP整体采用MVVM模式,基于JetPack(Lifecycle,LiveData,ViewModel,Room)构建
Stars: ✭ 64 (-42.34%)
Mutual labels:  im, qq
Him Vue
开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
Stars: ✭ 142 (+27.93%)
Mutual labels:  protobuf, im
Gff
GFF is a imitation QQ communication project, based on high IOCP. GFF是模仿QQ通讯项目,通信基于SAEA.MessageSocket、SAEA.Http、SAEA.MVC实现
Stars: ✭ 162 (+45.95%)
Mutual labels:  im, qq
Qtalk
Startalk is a high-performace IM software for business. It has been stably used in Qunar for more than 4 years, providing services as well as consultation after and before sales to business. Startalk is applicable to multiple scenarios, such as office automation, business services, and first-party SDKs for IM scenes
Stars: ✭ 980 (+782.88%)
Mutual labels:  talk, im
go-chat
go-chat.使用Go基于WebSocket开发的web聊天应用。单聊,群聊。文字,图片,语音,视频消息,屏幕共享,剪切板图片,基于WebRTC的P2P语音通话,视频聊天。
Stars: ✭ 516 (+364.86%)
Mutual labels:  protobuf, im
Im
仿QQ即时通讯系统服务端
Stars: ✭ 369 (+232.43%)
Mutual labels:  im, qq
Im
IM server based on netty. Provides a client jar. Integrate with your own login system.基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统
Stars: ✭ 490 (+341.44%)
Mutual labels:  protobuf, im
vscode-qq
基于安卓QQ协议的vscode-qq扩展
Stars: ✭ 588 (+429.73%)
Mutual labels:  im, qq
Him Netty
开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
Stars: ✭ 194 (+74.77%)
Mutual labels:  protobuf, im
Nettychat
基于Netty+TCP+Protobuf实现的Android IM库,包含Protobuf序列化、TCP拆包与粘包、长连接握手认证、心跳机制、断线重连机制、消息重发机制、读写超时机制、离线消息、线程池等功能。
Stars: ✭ 1,979 (+1682.88%)
Mutual labels:  protobuf, im
Netty Learning Example
🥚 Netty实践学习案例,见微知著!带着你的心,跟着教程。我相信你行欧。
Stars: ✭ 2,146 (+1833.33%)
Mutual labels:  protobuf, im
server
即时通讯(IM)系统
Stars: ✭ 6,896 (+6112.61%)
Mutual labels:  talk, im
wchat
【Beta -Demo】📤WEB即时聊天工具(类微信WEB),不能使用QQ微信?叫上好友一起试试这个😄。基于WebSocket协议的网页版(PC)在线聊天工具。
Stars: ✭ 20 (-81.98%)
Mutual labels:  im, qq
AndroidNetworkProgramming
Android网络编程实战总结,涉及HTTP、TCP、UDP常用协议。
Stars: ✭ 34 (-69.37%)
Mutual labels:  protobuf, im
i2pchat
🌀 i2pchat. Anonymous private secure opensource chat using end-to-end encrypted transport.
Stars: ✭ 25 (-77.48%)
Mutual labels:  im
akka-http-scalapb
akka-http protobuf binary and json marshalling/unmarshalling for ScalaPB messages
Stars: ✭ 15 (-86.49%)
Mutual labels:  protobuf
ocaml-grpc-envoy
Using OCaml + gRPC via Envoy
Stars: ✭ 41 (-63.06%)
Mutual labels:  protobuf
lemon-imui
基于 VUE 2.0 的 IM 聊天组件
Stars: ✭ 146 (+31.53%)
Mutual labels:  im
Open-IM-SDK-Android
OpenIM:由IM技术专家打造的基于 Go 实现的即时通讯(IM)项目,Android版本IM SDK 可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。
Stars: ✭ 144 (+29.73%)
Mutual labels:  im
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (-86.49%)
Mutual labels:  protobuf

CoffeeChat

opensource im with server(go) and client(flutter+swift)

News

有网友在Issues询问后续更新一事,这里回复一下:

今年事情比较多,所以进展十分缓慢,会不会放弃这个项目我也不能肯定,主要是作者精力有限,请大家原谅。发起这个项目的初衷,是为了更深入的学习IM服务端开发,如果有更好的开源go语言实现的im项目,我可能会考虑作为Contributor参与其中。从目前来看,OpenIM可能性很大。

最后,放出最近的一些动态以感谢大家的关心。

最新动态:

  • 至今: 生命不息,探索不止💪💪
  • 2021/08: 作者最近在考虑跳槽,故精力主要放在研究OpenIM,学习Kafka,微服务,收件箱,Etcd,Docker,K8S等使用,提升技术深度。
  • 2021/03 - 07: 开发QT客户端和C++跨平台SDK,受限于精力进展缓慢。
  • 2021/02: 使用sketch设计win+mac客户端界面。

总结:

  • 2021: 主要精力在探索百万级的架构,C++跨平台SDK,QT,Go微服务,Docker,Etcd等等,coffeechat几乎没有更新
  • 2020: 这一年coffeechat不断完善,作者主要在学习ios开发,实现简单ios app
  • 2019/08: coffeechat诞生,学习flutter,实现简单flutter客户端,后续因为flutter聊天界面下拉感觉效果不理想放弃

Preview

flutter

see CoffeeChat-Flutter

swift

screenshot

Features

设计

  • 架构设计:参考瓜子 IM
  • 协议设计:参考网易云 IM、环信、TeamTalk
  • 数据库设计
  • 消息分表存储设计
  • IM 消息 ID 生成设计

单聊群聊

  • flutter 客户端

  • 单聊

  • 多媒体消息:文本

  • 会话列表

  • 消息存储

  • 历史消息

  • 漫游消息(用户切换到任何设备都可以读取到最近的历史消息)

  • 离线消息(用户离线重新上线后收到最近 30 天的未读消息)

  • 多媒体消息:表情

  • 多媒体消息:图片

  • 未读消息计数

  • 消息推送(APNS)

  • 群聊

  • 群最高人数:200

  • 群管理:群主、加人、踢人

  • 群消息免打扰

  • 群成员管理

服务端特有

  • 负载均衡
  • 双机容灾
  • 性能压测 Benchmark
  • 业务监控
  • Redis 集群
  • docker
  • 阿里云OSS对象存储接入(40GB存储一年7块,每月100GB下行带宽一年200)
  • antispam
  • rpm安装包
  • docker镜像安装
  • 服务端初始化web界面,简化安装(参考wordpress)

客户端特有

  • 消息推送提醒(系统通知栏消息提醒)
  • 消息转发
  • 网络连接状态
  • 图片管理器
  • 查找聊天记录
  • 消息同步缓存
  • 会话同步缓存
  • 头像同步缓存
  • 未读计数桌面角标
  • 免打扰模式
  • 图片压缩

特色功能

  • 阅后即焚
  • 撤回
  • 正在输入
  • 已读回执(用户发送消息,获取对方是否已读状态 )
  • 多终端已读同步(同个产品多终端情况下,同步消息已读未读的状态)
  • 端到端加密
  • 高清语音消息
  • 文件上传下载
  • 语音通话(声网FlutterSDK)
  • 视频通话
  • electron 跨平台桌面客户端
  • flutter 跨平台移动端
  • swift/iOS 客户端+SDK
  • kotlin/Android 客户端+SDK
  • vue/Web 客户端+SDK

客服功能

  • 客服会话
  • 欢迎语
  • 自动分配在线客服
  • 客服正在输入提醒
  • 回头客

智能问答功能

  • AnyQ 百度开源 FAQ 问答系统接入

聊天机器人功能

  • 图灵机器人接入
  • 小爱机器人接入
  • 思知机器人接入
  • 微信机器人接入

Architecture

总体架构:
总体架构

逻辑架构:
逻辑架构

模块架构:
模块架构

单聊模块交互图: 单聊

See More architecture

Quick Start

Build

PS:请切换到master分支,编译和运行!

client

目前仅支持 Flutter 客户端,在 ios11 模拟器下测试通过。仅测试了登录登出、单聊、发文本、未读消息计数等功能。

  1. Flutter 安装,请参考 官网
  2. 下载 IntelliJ IDEA Ultimate,链接
  3. 使用 idea 打开 cc_flutter_app
  4. 打开终端,初始化项目,命令如下
cd client/cc_flutter_app
flutter pub get
  1. 点击 Open IOS Simulator,等待模拟器启动
  2. 点击 Run 图标

server(以 mac 环境为例)

2020.04.20 更新:使用go mod包管理工具代替dep。

  1. 安装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
  1. git clone
$ cd /Users/xmcy0011/repo #注意不是gopath路径!
$ mkdir github
$ cd github
$ git clone https://github.com/xmcy0011/CoffeeChat.git
  1. 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

Run

  1. client see here
  2. server see here

Document

  1. 产品介绍
  2. 架构和协议设计
  3. 消息分表存储
  4. IM 消息 ID 生成原理和常见技术难点
  5. 进度计划
  6. MQ在IM中的实践和选型

Contact

email:[email protected]

LICENSE

CoffeeChat is provided under the mit license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].