IM协议的选型需要考虑很多元素,具体如下:
消息:发送消息,离线消息,消息的扩展,消息回执
状态:在线状态 (移动互联 已经没有在线离线,认为一直在线)
用户管理:创建,删除,登陆,用户信息 (nick,头像)
好友管理:加好友,减好友,获取好友列表
群组/聊天室管理:创建群主,成员管理,权限管理,踢人。。。
隐私,黑名单
数据同步 (联系人,群组)
但常用IM协议基本如下所示,大概四种:
1、XMPP:基于xml的消息协议
优点:广泛使用,可扩展
缺点:流量较大
典型案例:Jabber、Gtalk、Facebook、新浪微博
2、MQTT:IBM开发的一个即时通讯协议
优点:多平台
缺点:简单的消息协议,要自己实现好友,群组
典型案例:推送
3、SIP:基于SIP,增加了 message 和 presence 的扩展
优点:已有SIP voip 服务的基础上,支持短信
缺点:SIP 信令控制的扩展,比较复杂
典型案例:VOIP
4、私有协议:ActivitySync
优点:对同步支持好,流量小
缺点:工作量大,扩展性差
典型案例:微信