1、前言
说到即时通讯,那就不能了解下IM通讯协议,它是即时通讯的核心与灵魂,一个好的通讯协议可以减少软件代码的复杂度以及维护难度,增加软件的可扩展性与可读性,反之会让实现代码结构变得臃肿不堪,甚至难以阅读。
2.常用IM通信协议及优缺点
- XMPP协议:
优点:基于xml协议,容易理解,使用广泛,易于扩展。
缺点:流量大,在移动终端也耗电。交互过程复杂。多被pc时代的产品使用,不适合移动时代的IM产品,即使我们基于xmpp进行改进,简化握手过程,改进文件传输机制,但是它的基因决定了如何改进,他都不适合移动互联网时代的IM产品 - MQTT协议:
优点:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。适合推送服务
缺点:协议简单,但是需要自己扩展好友,群组等功能。 - Protobuf协议:
优点:非常小、非常快、非常简单,一条消息数据用Protobuf序列化后的大小是JSON的1/10、XML格式的1/20、是二进制序列化的1/10。
缺点:不能表示复杂的数据结构
需要和其它系统做消息交换的,对消息大小很敏感的。那么protobuf适合了,它语言无关,消息空间相对xml和json等节省很多。
小数据的场合。如果你是大数据,用它并不适合。
以上协议中Protobuf算是比较不错的一个选择方案,但是对于复杂一些的数据结构定义有些不足。