2.1Android调研

来源:互联网 发布:百图水利软件 编辑:程序博客网 时间:2024/06/05 11:18

关于MQTT:https://zhuanlan.zhihu.com/p/20888181

几个要点

1:采用发布订阅模式,与请求回答模式不一样。(发布订阅的优点发布者与订阅者不比了解彼此,只要认识同一个消息代理即可。发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。)

2:MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。(MQTT允许使用通配符订阅主题,但是并不允许使用通配符广播。)

3:拥有服务质量,消息类型

4:貌似直接有专门的应用软件,直接可以拿来用的。


关于XMPP:http://blog.csdn.net/longshihua/article/details/51013827

1: XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。最初,XMPP作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。当时的即时消息传递网络是私有的,不适合企业使用,XMPP前身是Jabber(1998年),是一个开源组织定义的网络即时通信协议。

2:XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的。采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行。
XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。
服务器同时承担了客户端信息记录,连接管理和信息的路由功能.
网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等
基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML流.

3:XMPP工作原理1:节点连接到服务器
                              2:服务器利用本地目录系统中的证书对其认证
                              3:节点指定目标地址,让服务器告知目标状态
                              4:服务器查找、连接并进行相互认证
                              5:节点之间进行交互

4:XMPP应用传输的是与即时通讯相关的指令。在以前这些命令要么用二进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)
而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错
而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。可以说,XMPP用TCP传的是XML流.

5:XMPP通信结构: 每个 XMPP客户端用户必须拥有一个全局惟一标识符。基于历史原因,这些标识符称为 Jabber ID或JID。鉴于协议的分布式特征,JID应包含联系用户所需的所有信息,JID的结构类似于电子邮件地址,但不要求 JID同时也是有效的电子邮件收件人。
客户端和服务器节点,被统称为 XMPP实体,都拥有JID。一个有效的JID包括一系列元素:(1)域名(domain identifier);(2)节点(node identifier);(3)源(resource identifier).它的格式是node@domain/resource,resource这个是可选的,resource就是用于区分同一用户不同端登陆。
例如:SomeCorp公司的员工 John Doe可能拥有JID:John.Doe@somecorp.com,其中somecorp.com是 SomeCorp公司的XMPP服务器的地址,John.Doe是John Doe的用户名。
还可以使用JID连接到其他资源。这允许在一个XMPP实体标识符之外进一步处理拓展

6:优点:开放,标准(XMPP的技术规格已被定义在RFC3920及RFC3921),证实可用,分散,安全,可扩展
     缺点:数据负载过重,没有二进制传输
XMPP的传输小结:XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就如同“解包装--〉包装”的过程。只需要理解其接收的类型及返回的类型,便可以很好的利用XMPP来进行数据通讯.


推荐一个分析xmpp的链接:https://www.v2ex.com/t/131245。

XMPP反正做视频聊天肯定不适合,MQTT搜了半天,好像做视频也没相关的。。

之所以不用这些框架,因为项目小呀,自定义协议灵活呀。

原创粉丝点击