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

posted @ 2020-06-30 17:20  WidgetBox  阅读(400)  评论(0编辑  收藏  举报