【原创】史上最全开源IM盘点

引言

近些年开源IM百花齐放,特别是国内呈现喷涌趋势。

前有5年前蘑菇街的TeamTalk和网易泡泡发生版权纠纷被Github下架。后有最近很活跃的WildfireChat(野火IM),发展迅猛,短短时间,star就突破了2K。

国外的如基于js的RocketChat,star达到惊人的29K;没有服务端却格外强调安全和隐私的telegram等。还有其他十多个强调服务端或者仅有客户端的开源项目,质量都不错,都具有一定的研究意义。

本文根据作者平时的收藏整理而成,共归纳了17个开源的IM项目:

  • 提供完整解决方案的。包括服务端,pc,mac,ios,android和web等。主要有 TeamTalk 和 WildfireChat 。

  • 国外的,他们的特点是star数量惊人,实现形式和国内的通讯工具不太一样,可以进阶研究学习使用。主要有RocketChat,Telegram 和 DeltaChat 。

  • 未深入研究,有服务端有部分平台客户端,如52im社区作者的MobileIMSDK(java),flamingo(c++)和 GoBelieveIO(go)。

  • 偏服务端,其中以bilibili技术总监开源百万聊天室Terry-Mao/goim(go)为代表,还有如Terry-Ye/im(go),cim(java),gim(go),OIMCha(java)和J-IM(java)等等。

  • 偏客户端,模仿同类APP的界面实现的。如TSWeChat(swift),motianhuo/wechat(java),gsdios/GSD_WeiXin(object-c)。

尽管如此繁多,但是能商用的,也就那么几款。

WildfireChat成熟且BUG少功能完整的,但是收费。

TeamTalk功能也相对完整,但是BUG比较多技术相对比较古老。适合学习和入门,特别是服务端有非常多的细节,比如负载均衡、主备、无状态设计、读写分离以及可水平扩展的架构是如何设计的等等。

下面来看一下具体的开源项目情况。

国内

TeamTalk(★★★★☆)

star:6.2k
github: https://github.com/meili/TeamTalk
服务端: c++
客户端: windows,android,ios,mac,web管理后台
简介:

TeamTalk是一款蘑菇街开源的企业内部即时通讯软件,目前支持pc、安卓、IOS、Mac和web多个终端。
该项目适合学习和入门,客户端BUG很多,服务端比较稳定。
我维护的分支(有详细的服务端编译部署文档):
https://github.com/xmcy0011/TeamTalk

图片:
https://mmbiz.qpic.cn/mmbiz_jpg/1IPWS6nqWbjzGnTNCp5Vh8YsuKHrs4NG5h1IffQInP42TViadS4gkkWgmoBbF26lOh207j2l6W99icmgic8eH6iblQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
跟我学IM后台开发
更多信息可以参考:OSChaina

标签:学习Linux C++服务端开发 | 企业内部沟通工具 | 丰富的终端支持 | 十万级IM服务端架构 | BUG多 | 蘑菇街 | 5年前

WildfireChat(★★★★★)

star:5.6k
github: https://github.com/wildfirechat/server
服务端: java
客户端: Electron(windows/mac/linux),android,ios,web
简介:

非常活跃的开源IM解决方案,社区版免费,专业版收费(号称支持百万并发和集群部署)。
优点:客户端支持全面,功能成熟完整BUG少。和微信的实现非常接近,底层也是使用的微信跨平台通信库Mars,在弱网(2.5G,E信号)下理论上拥有和微信一样优秀的表现。
缺点:社区版服务端性能不好(嵌入式数据库H2、不支持集群等),只适合学习和试用。

图片:
tt
跟我学IM后台开发
标签:成熟 | 集群版收费 | 丰富的客户端 | 专业 | 活跃 | 贴近微信 | 界面美观

MobileIMSDK

star:2.6k
语言:java
github: https://github.com/JackJiang2011/MobileIMSDK
简介:

著名http://www.52im.net/站长作品,有丰富的文档和学习资源。并且也包含免费版和收费精编注释版。
只不过要花钱购买源码,可能更适合企业吧。

图片:
跟我学IM后台开发
更多信息可以参考:即时通讯网

flamingo

star: 2.1k
github: https://github.com/balloonwj/flamingo
简介:

整体操作上类似QQ,服务端使用C++编写,同时提供windows客户端和安卓客户端。

语言: c++
图片:
跟我学IM后台开发

GoBelieveIO

star: 1.5k
github: https://github.com/GoBelieveIO/im_service
语言:go
简介:

服务端使用Go实现,客户端比较简陋(19年,现在不知道发展成什么样子了)

语言: go
图片: 略

国外

RocketChat

star: 29k
github: https://github.com/RocketChat/Rocket.Chat
语言: JavaScript
简介:

如果是果粉,mac,iphone都可以直接在app store下载,强烈建议使用体验一下,确实和其他所有IM不太一样。

语言: JavaScript
图片:
跟我学IM后台开发
跟我学IM后台开发

Telegram

star: 15
github: https://github.com/DrKLO/Telegram
简介:

也可以在app store下载,非常强调安全(加密、全部开源、无后端),如果需要深入研究IM的安全,这个开源项目非常推荐。
国外用的比较多,就是因为没有服务端,数据和隐私有保障。
PS:本人没有编译部署过。

语言: c++,java
图片:
跟我学IM后台开发
跟我学IM后台开发

DeltaChat

star: 625
github: https://github.com/deltachat/deltachat-android
简介:

也没有服务端,只要知道对方的邮箱地址,即可聊天。原理是通过邮件对内容加解密实现通信。可惜比telegram晚出,不然也会火的。
PS:本人部署过,但是因为发一条消息就会有一封邮件,体验不太好。有时还会丢消息,实时性也无法保障,但是可以尝鲜,打开思路。

语言: java,rust,swift
图片:
跟我学IM后台开发

服务端

goim

star:4.7k
github:https://github.com/Terry-Mao/goim
语言:go
简介:

bilibili技术总监作品,百万级并发聊天室服务端,主要用来研究高并发的服务端架构。

架构:
跟我学IM后台开发

Terry-Ye/im

star:391
github:https://github.com/Terry-Ye/im
语言:go
简介:

上面goim的架构不好理解,通过这个项目可以很好的理解百万级别IM并发的服务端架构设计。

架构:
跟我学IM后台开发

cim

star:7.1k
github:https://github.com/crossoverJie/cim
语言:java
简介:

比较有意思,命令行交互的IM。官方介绍:cim(cross IM) 适用于开发者的分布式即时通讯系统

架构:
跟我学IM后台开发

gim

star:1.2k
github:https://github.com/alberliu/gim
语言:go
简介:

有比较多的一些交互流程和一些基础技术名词的说明和解释,比较适合用来学习go如何开发im服务。

交互图:
跟我学IM后台开发

OIMChat

star: 1.4K
gitee:https://gitee.com/oimchat/oim-fx
语言:java,javafx
简介:

桌面版客户端主要采用JavaFX开发,支持跨平台Windows、Mac、Linux等主流系统使用。服务端也是java,界面上类似QQ。

图片:
跟我学IM后台开发

J-IM

star: 5.9K
gitee:https://gitee.com/xchao/j-im
语言:java
简介:

服务端使用java开发,号称单机可支持几十万至百万人同时在线。客户端是网页版,功能比较齐全。
1、高性能(单机可支持几十万至百万人同时在线)
2、轻量、可扩展性极强
3、支持集群多机部署
4、支持SSL/TLS加密传输
5、消息格式极其简洁(JSON)
6、一端口支持可插拔多种协议(Socket自定义IM协议、Websocket、Http),各协议可分别独立部署。
7、内置消息持久化(离线、历史、漫游),保证消息可靠性,高性能存储
8、各种丰富的API接口。
9、零成本部署,一键启动。

图片:
跟我学IM后台开发

APP

TSWeChat

star:3.6k
github:https://github.com/hilen/TSWeChat
语言:swift
简介:

swift版高度还原微信的开源项目,仅包含客户端代码,使用mock展示效果。

图片:
跟我学IM后台开发

motianhuo/wechat

star:5.1k
github:https://github.com/motianhuo/wechat
语言:java
简介:

也是高仿微信的安卓客户端项目。

图片:
跟我学IM后台开发

gsdios/GSD_WeiXin

star:3.1k
github:https://github.com/gsdios/GSD_WeiXin
语言: object-c
简介:

同样高仿微信。

图片:
跟我学IM后台开发
PS:更建议看wildfirechat里面的实现,虽然稍微复杂一些。但是别人有后端,更适合实战和找工作吧。https://github.com/wildfirechat/ios-chat

总结

这么多开源项目,从哪一个开始好呢?

推荐从 TeamTalk 或者 WildFireChat 开始。

为什么?有2个很重要的原因:全面和方便调试

  • 对于要研究后端的同学,你把服务端部署一下,然后安装一个客户端,用一用,看看服务端log,很可能就大概明白一些了。
  • 对于要研究客户端/app的同学,你也可以用别人的服务端来调试。

如果本身是linux c++的同学,强烈推荐研究teamtalk(主要是服务端),主要学什么呢?

  1. 学高可用服务端的架构。负载均衡login_server的实现,route_server路由的设计,msg_server网关用户数据模型设计,db_proxy_server的mysql连接池、读写分离、消息存储的分表、redis分库等。
  2. 学IM协议和交互流程。
  3. Linux脚本。
  4. 数据库表的设计。

作者:杰克・许,喜欢运动和开源的90后野路子程序员一枚。
微信:xuyc1992
博客:www.geek265.com
公众号:跟我学IM后台开发

跟我学IM后台开发

猜你喜欢

转载自blog.csdn.net/xmcy001122/article/details/110679978
今日推荐