都9102年了,该怎样开发你的IM

1,934 阅读8分钟

根据马斯洛需求层次理论,在物质异常丰富的今天,满足了生理需求之后,社交需求是被普通大众更为渴望和满足的需求,也是最可能都能满足的需求。某信就完美地完成了这个任务,使国人进入了信息化时代,某讯可谓对国家和社会功不可没。当然某讯也凭借着某信垄断社交领域,建立了庞大帝国,控制了国内互联网行业的大半河山。

在某信的垄断之下,国内做社交可谓空难重重。2019.1.15日是历史性的一天,这一天同时发布了3款社交产品,多闪、马桶MT和聊天宝。但上来就惨遭某信封杀。想要挑战真的是太难,虽然技术很难,但非技术因数更难。但世界是多样的,需求也是多样的,总有某信照不到的地方,比如职场的,求职招聘的,游戏直播的,陌生人社交的,甚至“约炮”的,很多小众领域依然活得很好。

社交需求无处不在,除了主打社交的这些产品之外,还有些在自己本行业深耕的各行各业,也都有自己社交的需求,需要用户之间的沟通,需要用户与商家的沟通。可以不夸张地说每个APP都需要使用IM。

受限于某信的封闭,IM研发门槛又高,非主营业务,无法投入过多精力,一时间即时通讯云平台又风起云涌。环信、容联云、融云等初创公司,以及大公司的小部门,比如网易云信,阿里百川,腾讯云通信等,纷纷推出了自己的云通讯产品。这边说1周集成完成,那边说我1小时就行,还有人说我3分钟搞定。这边说我的便宜,每月只要XXX元,那边说我的比你便宜一半,还有人说我都免费。好不热闹。

你说都9102年了,这IM到底该怎么做啊?无外乎这几种做法。

1,自研

这绝非普通公司能够承受得了的,首先门槛极高,需要大量的人力和财力。另外即便你有大量的人力和财力,你也需要足够多的时间打磨您的IM,选对了人的情况下至少要3年时间。没有几家公司能够有这么雄厚的人力和财力,同时又有几年以上的IM技术沉淀。据作者的小道消息,多闪就是使用的自家技术,他们已经在IM领域蓄力多年,也只有像字节跳动这样的巨头才能做到自研。

2,使用云通讯

上面提到了,云通讯遍地开花,随处可选。但现在显然已经到了结果子的时候,没有人再免费,价格也是说涨就涨。你可以看看这几家的费用,以百万日活来计算,每年是一笔非常大的费用。(价格我就不细算了。另外我只列了下面这3家,因为我只推荐用这三家,原因就不细说了,以免口水)

网易云信_云信价格

腾讯云通信 IM 定价

融云IM价格

采用云通讯的好处也是非常明显的,对于不差钱、赶时间或研发能力薄弱的公司来说,接入方便,技术支持周到,能够快速开发出自己的业务逻辑,也是个非常不错的选择。作者从朋友处得知,另外两款产品也都是基于云通讯二次开发的,这也就是王欣能够在这么短时间内推出一款有特色的产品的原因之一。隐患也是很大的,万一云通讯要杀猪过年,岂不是白白滴替他人打工。所以命根子还是攥在自己手里最放心。

(前一段有人质疑聊天宝的前身子弹短信采用网易云信的通讯云,这里发表一下我的看法,通讯云是基础设施,在上面开发业务一点都没有问题,毕竟吃猪肉用不着养猪嘛,哪怕是杀猪卖肉也不需要亲自去养猪。)

另外国外的公司还有FCM可用,但只能用户Android,不能用于iOS和PC,也很受限。

3,开源产品

作者都奇了怪了,都9102年了,也还没有一个巨头来开源个好用的IM,谷歌这是怎么了?现在最常见开源的IM系统就是基于XMPP的ejabberd和openfire。首先先天就不足,XMPP本身是PC时代的产物;考虑到移动互联的各种特性,比如流量敏感性、网络不稳定性等因素,要想使用XMPP构建则需要填无数的坑,以至于有很多公司先用了XMPP,后废弃掉从新自研一套新协议,因为实在对移动互联太不友好了。其次是难于维护,ejabberd基于erlang开发,openfire多年没有更新了(我也不知道为啥不更新,可能是因为更新了也做不好吧,毕竟协议太不适合移动互联时代了)。

说了这么多,到底该怎么办?

=====一下利益相关,请自行判断==========

说了这么多,终于到正题了,是时候推出我们的产品“野火IM”了。

首先大家可以扫码下载体验我们的Demo。读完下面的内容,再找研发工程师花上几个小时部署和打包,您就能拥有这款自己的聊天软件啦。


然后再给大家发一下图片,展示一下我们的功能。

最后介绍一下野火IM的特点

  1. 协议适合移动互联网时代。协议采用的是私有协议,基于MQTT的二次开发,交互流程使用邮件服务的交互流程,序列化使用protobuf。解释一下,MQTT协议是物联网协议,特点就是协议非常节省流量,一般情况下协议头只有2个字节;邮件同步协议,用在消息同步上非常合适,可以保证不丢不重复,作者以前也做过邮件相关的工作,在这里向我们做邮件的前辈龙哥致敬哈;序列化就是protobuf的一种方式,XMPP是xml序列化的,很臃肿,json好一些,但还是有些浪费,protobuf就非常高效,序列化后的体积也最小。因此我们的协议基本上优化到了极致,不丢消息,体积小交互少就意味着省流量不费电。另外协议栈使用了微信的Mars连接库,在移动端的优化做得非常好。
  2. 多端。邮件协议的特点决定了天然支持多端,可以同时任意个端,任意类型的端同时使用。如需要限制则需要在应用层限制。
  3. 跨平台。协议栈是基于微信Mars进行开发的,支持跨平台,可以支持android、iOS,MacOS和Windows。目前已经完成了android和iOS平台上的实现。PC上的也很快会提供。另外我们未来还会提供Web版本(Web版本稍弱,只支持im通信)。
  4. 代码和软件友好。客户端的代码全部开源,使用了MIT License,客户可以想怎么改就怎么改,想怎么用就怎么用。客户端代码分为协议栈、功能库、界面库和Demo应用。客户集成使用起来也比较方便。服务器包括IM服务,Demo应用服务,推送服务,机器人服务,频道(公众号)服务,审查服务。其中IM服务提供社区版,不限制商业和个人使用。其它的服务全部MIT License开源。另外提供商业版本的IM服务,支持大规模集群部署和更宽松的服务接口调用频率。
  5. 功能丰富。像常见聊天功能都支持,包括单聊、群聊、聊天室、频道(公众号)等聊天类型,支持聊天类型的自定义。消息类型包括文本、图片、语音、短视频、地理位置、动态表情及自定义消息,你可以自定义任意类型消息。还支持输入状态,@提醒,撤回。支持群组操作,支持用户信息托管和好友关系托管。支持建立机器人及频道(公众号)。支持服务API调用。(物联网设备的支持也在考虑之中,需要毕竟长的时间之后才能提供。)
  6. 安全。野火IM经过了仔细的设计,针对链路及本地存储进行了加密。针对每个Session分配一个通信的密钥和存储密钥(一个客户在一个设备上登陆就是一个Session,同一个客户在不同设备上登陆就是不同的Session,不同的客户在同一个设备上登陆也是不同的Session),分别对IM通信加密和本地数据库加密。非IM通信,比如与Demo应用的通信需要自行实施HTTPS通信。
  7. 历史消息保持在云端,可以长久保存,文件保存在七牛。
  8. 客户全部自己掌控。所有服务全部部署到客户自己的服务器,安全放心。不用担心有后门木马。首先客户端和支持服务全部开源,经得起检验。其次IM服务可以配置好出访限制,只能主动出访到这几个支持服务,其它出访全部禁止,保证安全。另外也不用担心客户的重要信息资产泄漏。再也不用担心有人偷看我们聊天了。

文档地址:

http://docs.wildfirechat.cn

开源地址:

https://github.com/wildfirechat