CoffeeChat
opensource im with server(go) and client(flutter+swift)
️ ️ Warning ️ ️ It is under continuous development and is only suitable for learning use.
News
Some netizens asked about follow-up updates in Issues. Here is the reply:
There are many things going on this year, so the progress is very slow. I am not sure whether I will abandon this project. The main reason is that the author has limited energy. Please forgive me. The original intention of initiating this project is to learn more about IM server development. If there is a better IM project implemented in open source Go language, I may consider participating as a contributor.
Finally, I would like to post some recent updates to thank everyone for their concern.
Latest news:
- So far: Life is endless and exploration is endless??
- 2022/07/01: The v2 architecture (based on the kratos v2 framework) is currently being developed. The overall design is changed from pb+tcp to http+json interface method to reduce the cost of getting started. Considering the degree of freedom and convenient experience, an android app is currently being developed.
2022/04/10: Develop a Monthly Release plan and ensure at least one Release every month- 2021/08: The author is considering changing jobs recently, so he focuses on studying OpenIM, learning the use of Kafka, microservices, inboxes, Etcd, Docker, K8S, etc., to improve the technical depth.
- 2021/03 - 07: Developing QT client and C++ cross-platform SDK, progress is slow due to energy constraints.
- 2021/02: Use Sketch to design the win+mac client interface.
Summarize:
-
2022
: Start again, learn android + kratos + k8s, and realize the reconstruction of go server v2 version -
2021
: Mainly focusing on exploring million-level architecture, C++ cross-platform SDK, QT, Go microservices, Docker, Etcd, etc. CoffeeChat has almost no updates -
2020
: CoffeeChat has been continuously improved this year. The author is mainly learning ios development and implementing simple ios apps. -
2019/08
: CoffeeChat was born. I learned flutter and implemented a simple flutter client. Later, I gave up because the pull-down effect of the flutter chat interface was not ideal.
Client
Supported clients are:
Under development (V2)
- Android: Based on android 7.0 + java implementation, currently under development (August 2022), suitable for
V2版本
server.
Paused (V1)
- iOS: implemented based on swift5, currently the main maintained client, recommended. Applicable to
V1版本
server. - Flutter: Based on flutter2 and dart, it is no longer maintained and is only for learning.
- Windows: Based on C++ and NetEase duilib, currently only the login function is implemented.
- Mac: Based on c++ and Qt6, currently only the login function is implemented.
Please click the corresponding link to view details.
Preview
flutter
see CoffeeChat -Flutter is not maintained for the time being and is for reference only.
swift
Features
design
Single chat and group chat
Server specific
Client specific
Features
Chatbot functionality
Architecture
Module architecture:
Single chat module interaction diagram:
See More architecture
Quick Start
PS: Please switch to the master branch, compile and run!
- Start Server (requires docker desktop >= 4.0.1):
CoffeeChat/server
# 从代码编译docker镜像,安装mysql,redis等依赖,并自动初始化mysql数据
$ docker-compose up -d">
$ git clone https://github.com/xmcy0011/CoffeeChat.git
$ cd CoffeeChat /server
# 从代码编译docker镜像,安装mysql,redis等依赖,并自动初始化mysql数据
$ docker-compose up -d
- Compile the client. Recommended iOS client (select iphone 11 for simulator), please go to: client
- After the iOS simulator and app are started, click "Register" and change the server IP address to the local IP (no need to enter the port). After successful registration, log in.
- There are 2 built-in robots (Sizhi and WeChat) and 3 friends, which can test the chat function.
For more details, please go to:
stop:
CoffeeChat/server
$ docker-compose down -v">
$ cd CoffeeChat /server
$ docker-compose down -v
Document
- Product introduction
- Architecture and protocol design
- Message table storage
- IM message ID generation principles and common technical difficulties
- schedule
- Practice and selection of MQ in IM
For more articles, please go to:
Thinks
- mattermost: Mainly learn some skills in its go engineering practice, which is still in the research stage.
- Open-IM-Server: By analyzing its architecture and code, I understood the inbox mechanism and the division practice of im microservices (go).
- goim: Learn how kafka is applied in chat room scenarios under a million-level architecture.
- Terry-Ye/im: Combined with goim, I understood the meaning of the so-called job and the structure of goim.
- gim: A simple write diffusion project that can provide a deeper understanding of the architecture and principles of write diffusion.
For more open source IM, please go to: The most comprehensive inventory of open source IM in history
Contact
email:[email protected]
WeChat communication: xuyc1992 (please note: im)
If you like it, please follow the public account?
"Go and Distributed IM"??
LICENSE
CoffeeChat is provided under the mit license.