iOS 即时通信的聊天协议
1.首先我们以实现方式来切入,基本上有以下四种实现方式:
1)基于Scoket原生:代表框架 CocoaAsyncSocket。
2)基于WebScoket:代表框架 SocketRocket。
3)基于MQTT:代表框架 MQTTKit。
4)基于XMPP:代表框架 XMPPFramework
当然,以上四种方式我们都可以不使用第三方框架,直接基于OS底层Scoket去实现我们的自定义封装。下面我会给出一个基于Scoket原生而不使用框架的例子,供大家参考一下。
首先需要搞清楚的是,其中MQTT和XMPP为聊天协议,它们是最上层的协议,而WebScoket是传输通讯协议,它是基于Socket封装的一个协议。而通常我们所说的腾讯IM的私有协议,就是基于WebScoket或者Scoket原生进行封装的一个聊天协议。
具体这3种聊天协议的对比优劣如下:
1.XMPP
优点:协议开源,可拓展性强,开发者接入方便
缺点:XML表现力弱,有太多冗余信息,流量大,实际使用有大量天坑
2.MQTT
优点:协议简单,流量少,订阅 + 推送模式,
缺点:他并不是专门为IM设计的协议,多使用于推送
3.私有协议
优点:市面上主流的IM APP都是使用的私有协议。高效,节约流量(一般使用二进制协议),安全性高,难以破解
缺点:开发初期没有样例参考,开发难度大
总结:
所以说到底,iOS要做一个真正的IM产品,一般都是基于Scoket或者WebScoket等,再之上加上一些私有协议来保证的。
by:liming