[Original] The most complete open source IM inventory in history

introduction

In recent years, open source IM has blossomed, especially in the country.

Five years ago, TeamTalk in Mogujie and NetEase Bubble had a copyright dispute and were removed from Github. Later, there was WildfireChat (wildfire IM), which was very active recently, and it developed rapidly. In a short time, star broke through 2K.

Foreign companies, such as RocketChat based on js, have an amazing 29K star; telegram, which has no server but emphasizes security and privacy. There are more than a dozen other open source projects that emphasize the server side or only the client side. The quality is good and all have certain research significance.

This article is organized according to the author's usual collection, summarizing a total of 17 open source IM projects:

  • Provide a complete solution. Including server, pc, mac, ios, android and web, etc. There are mainly TeamTalk and WildfireChat.

  • In foreign countries, they are characterized by an astonishing number of stars, and their implementation form is not the same as that of domestic communication tools. They can be studied and used in advanced studies. There are mainly RocketChat, Telegram and DeltaChat.

  • Without in-depth research, there are servers and some platform clients, such as MobileIMSDK (java), flamingo (c++) and GoBelieveIO (go) by 52im community authors.

  • Partial server side, which is represented by the open source million chat room Terry-Mao/goim(go), technical director of bilibili, as well as Terry-Ye/im(go), cim(java), gim(go), OIMCha(java) And J-IM (java) and so on.

  • Partial client side, imitating the interface of similar apps. Such as TSWeChat (swift), motianhuo/wechat (java), gsdios/GSD_WeiXin (object-c).

Although there are many, but there are only a few models that can be used commercially.

WildfireChat is mature and has few bugs and is fully functional, but it charges a fee.

The TeamTalk function is relatively complete, but the technology is relatively old with more bugs. Suitable for learning and getting started, especially the server has a lot of details, such as load balancing, active and standby, stateless design, read-write separation, and how the horizontally scalable architecture is designed.

Let's take a look at the specific open source project situation.

domestic

TeamTalk(★★★★☆)

star: 6.2k
github: https://github.com/meili/TeamTalk
server: c++
client: windows, android, ios, mac, web management background
Introduction:

TeamTalk is a Mogujie open source enterprise internal instant messaging software that currently supports multiple terminals such as PC, Android, IOS, Mac and web.
This project is suitable for learning and getting started. There are many BUGs on the client side and the server side is relatively stable.
The branch I maintain (there are detailed server-side compilation and deployment documents):
https://github.com/xmcy0011/TeamTalk

Picture: For
https://mmbiz.qpic.cn/mmbiz_jpg/1IPWS6nqWbjzGnTNCp5Vh8YsuKHrs4NG5h1IffQInP42TViadS4gkkWgmoBbF26lOh207j2l6W99icmgic8eH6iblQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
Follow me IM background development
more information, please refer to: OSChaina

Tags: Learning Linux C++ server development | Enterprise internal communication tools | Rich terminal support | One hundred thousand level IM server architecture | BUG many | Mogujie| 5 years ago

WildfireChat(★★★★★)

star: 5.6k
github: https://github.com/wildfirechat/server
Server: java
Client: Electron (windows/mac/linux), android, ios, web
Introduction:

A very active open source IM solution, the community version is free, and the professional version is charged (claimed to support millions of concurrent and cluster deployments).
Advantages: The client has comprehensive support, mature and complete functions, and few BUGs. It is very close to the implementation of WeChat. The bottom layer is also the WeChat cross-platform communication library Mars, which theoretically has the same excellent performance as WeChat under a weak network (2.5G, E signal).
Disadvantages: The performance of the community version server is not good (embedded database H2, does not support clusters, etc.), only suitable for learning and trial.

Picture:
tt
Follow me IM background development
Tags: Mature | Cluster Edition Fees | Rich Clients | Professional | Active | Close to WeChat| Beautiful interface

MobileIMSDK

star: 2.6k
Language: java
github: https://github.com/JackJiang2011/MobileIMSDK
Introduction:

Famous http://www.52im.net/ webmaster works, rich in documents and learning resources. And also includes a free version and a paid version with fine-edited annotations.
It's just that you have to spend money to buy source code, which may be more suitable for enterprises.

Picture: For
Follow me IM background development
more information, please refer to: Instant Messaging Network

flamingo

star: 2.1k
github: https://github.com/balloonwj/flamingo
Introduction:

The overall operation is similar to QQ, the server is written in C++, and both windows client and Android client are provided.

Language: c++
Picture:
Follow me IM background development

GoBelieveIO

star: 1.5k
github: https://github.com/GoBelieveIO/im_service
Language: Go
Introduction:

The server is implemented using Go, and the client is relatively simple (19 years, I don’t know what it has developed into now)

Language: go
Picture: Slightly

foreign

RocketChat

star: 29k
github: https://github.com/RocketChat/Rocket.Chat
Language: JavaScript
Introduction:

If it is a fruit fan, mac and iphone can be downloaded directly in the app store. It is strongly recommended to use it and experience it. It is indeed different from all other IMs.

Language: JavaScript
Image:
Follow me IM background development
Follow me IM background development

Telegram

star: 15
github: https://github.com/DrKLO/Telegram
Introduction:

It can also be downloaded in the app store, with a strong emphasis on security (encryption, all open source, no backend). If you need to study IM security in depth, this open source project is highly recommended.
It is used more abroad because there is no server, and data and privacy are guaranteed.
PS: I have not compiled and deployed.

Language: c++, java
Picture:
Follow me IM background development
Follow me IM background development

DeltaChat

star: 625
github: https://github.com/deltachat/deltachat-android
Introduction:

There is no server, as long as you know the email address of the other party, you can chat. The principle is to realize communication by encrypting and decrypting content through email. It's a pity that it comes out later than telegram, otherwise it will be popular.
PS: I have deployed it, but because there will be an email after sending a message, the experience is not very good. Sometimes news is lost, and real-time performance cannot be guaranteed, but you can try to open up your mind.

Language: java, rust, swift
Picture:
Follow me IM background development

Server

goim

star: 4.7k
github: https://github.com/Terry-Mao/goim
Language: go
Introduction:

The work of the technical director of bilibili, a million-level concurrent chat room server, is mainly used to study the high-concurrency server architecture.

Architecture:
Follow me IM background development

Terry-Ye/im

star: 391
github: https://github.com/Terry-Ye/im
Language: go
Introduction:

The architecture of goim above is not easy to understand. Through this project, the server-side architecture design of million-level IM concurrency can be well understood.

Architecture:
Follow me IM background development

cim

star: 7.1k
github: https://github.com/crossoverJie/cim
Language: java
Introduction:

More interesting, IM with command line interaction. Official introduction: cim (cross IM) is a distributed instant messaging system for developers

Architecture:
Follow me IM background development

gim

star: 1.2k
github: https://github.com/alberliu/gim
Language: Go
Introduction:

There are more explanations and explanations of some interactive processes and some basic technical terms, which are more suitable for learning how to develop im services.

Interactive diagram:
Follow me IM background development

OIMChat

star: 1.4K
gitee: https://gitee.com/oimchat/oim-fx
language: java, javafx
introduction:

The desktop version of the client is mainly developed by JavaFX and supports cross-platform Windows, Mac, Linux and other mainstream systems. The server is also java, and the interface is similar to QQ.

image:
Follow me IM background development

J-IM

star: 5.9K
gitee: https://gitee.com/xchao/j-im
Language: java
Introduction:

The server is developed using java, and it is said that a single machine can support hundreds of thousands to millions of people online at the same time. The client is a web version with relatively complete functions.
1. High performance (single machine can support hundreds of thousands to millions of people online at the same time)
2. Lightweight and extremely scalable
3. Support cluster multi-machine deployment
4. Support SSL/TLS encrypted transmission
5. Message format is extremely concise ( JSON)
6. One port supports pluggable multiple protocols (Socket custom IM protocol, Websocket, Http), and each protocol can be deployed independently.
7. Built-in message persistence (offline, history, roaming) to ensure message reliability, high-performance storage
8. Various rich API interfaces.
9. Zero-cost deployment, one-click start.

image:
Follow me IM background development

APP

TSWeChat

star: 3.6k
github: https://github.com/hilen/TSWeChat
Language: swift
Introduction:

The swift version highly restores WeChat's open source project, only contains client code, and uses mocks to display the effect.

image:
Follow me IM background development

motianhuo/wechat

star: 5.1k
github: https://github.com/motianhuo/wechat
Language: java
Introduction:

It is also an Android client project that mimics WeChat.

image:
Follow me IM background development

gsdios/GSD_WeiXin

star: 3.1k
github: https://github.com/gsdios/GSD_WeiXin
Language: object-c
Introduction:

The same high imitation WeChat.

Picture:
Follow me IM background development
PS: It is more recommended to look at the implementation in wildfirechat, although it is a little more complicated. But others have a back-end, which is more suitable for actual combat and job hunting. https://github.com/wildfirechat/ios-chat

to sum up

With so many open source projects, which one should I start with?

It is recommended to start with TeamTalk or WildFireChat .

why? There are 2 very important reasons: comprehensive and easy to debug .

  • For students who want to study the back-end, you deploy the server, then install a client, use it, and look at the server log, you probably understand something.
  • For students who want to study client/app, you can also use other people's server to debug.

If you are a classmate of linux c++, I strongly recommend studying teamtalk (mainly on the server side), what do you mainly learn?

  1. Learn the architecture of the high-availability server. The realization of load balancing login_server, route_server routing design, msg_server gateway user data model design, db_proxy_server MySQL connection pool, read-write separation, message storage sub-table, redis sub-database, etc.
  2. Learn the IM protocol and interaction process.
  3. Linux screenplay.
  4. The design of the database table.

Author: Jack Xu, like sports and 90 wild ways after an open-source programmers.
WeChat: xuyc1992
Blog: www.geek265.com
Public Account : Follow Me IM Backstage Development

Follow me IM background development

Guess you like

Origin blog.csdn.net/xmcy001122/article/details/110679978