XMPP学习使用

写在前面的话

1.XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
2.http://blog.csdn.net/wbw1985/article/details/55022 基础知识描述参考网址
3.https://github.com/yangyangFeng/TY_XMPPDEMO 基于XMPP的DEMO下载(但是亲测有点问题,稍后我会重传完整项目)
4.https://github.com/robbiehanson/XMPPFramework XMPPFrameWork的Git贡献者
5.http://www.cocoachina.com/ios/20141219/10703.html CocoaChina的详细解释

总结概述

大体知识描述:
1.就是说XMPP的前身是Jabber,开源的网络即时通信协议,后来被标准化了
2.优点是 “分布式的网络架构”和“ 分布式的网络架构”,有很好的弹性和安全性

XMPP协议的组成

  • RFC 3920 XMPP
  • RFC 3921
  • XEP-0030
  • XEP-0115
  • XEP-0045
  • XEP-0096
  • XEP-0124
  • XEP-0166
  • XEP-0167
  • XEP-0176
  • XEP-0177
  • XEP-0180
  • XEP-0181
  • XEP-0183

XMPP协议网络架构

  • XMPP客户端

概述:XMPP 系统的一个设计标准是必须支持简单的客户端。事实上,XMPP 系统架构对客户端只有很少的几个限制
  1. 通过 TCP 套接字与XMPP 服务器进行通信;
  2. 解析组织好的 XML 信息包;
  3. 理解消息数据类型。
  • XMPP服务器

概述:

1.XMPP开源服务器一般被设计成模块化,由各个不同的代码包构成,这些代码包分别处理Session管理、用户和服务器之间的通信、服务器之间的通信、DNS(Domain Name System)转换、存储用户的个人信息和朋友名单、保留用户在下线时收到的信息、用户注册、用户的身份和权限认证、根据用户的要求过滤信息和系统记录等。
2.另外,服务器可以通过附加服务来进行扩展,如完整的安全策略,允许服务器组件的连接或客户端选择,通向其他消息系统的网关

XMPP 服务器遵循两个主要法则:

  1. 监听客户端连接,并直接与客户端应用程序通信;
    2.与其他 XMPP 服务器通信;
  • XMPP网关

1.XMPP 突出的特点是可以和其他即时通信系统交换信息和用户在线状况。
2.由于协议不同,XMPP 和其他系统交换信息必须通过协议的转换来实现,目前几种主流即时通信协议都没有公开,所以XMPP 服务器本身并没有实现和其他协议的转换,但它的架构允许转换的实现。
3.实现这个特殊功能的服务端在XMPP 架构里叫做网关(gateway)。

4.目前,XMPP 实现了和AIM、ICQ、IRC、MSN Massager、RSS0.9 和Yahoo Massager 的协议转换。由于网关的存在,XMPP 架构事实上兼容所有其他即时通信网络,这无疑大大提高了XMPP 的灵活性和可扩展性。

XMPP协议网络架构总结

  • XMPP协议结构描述

1.XMPP是一个典型的C/S架构,不同于P2P客户端到客户端的架构
2.XMPP也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的(也有例外,例如在两个客户端传输文件时),当增加功能时,多数是在服务器端进行,减轻客户端工作压力
3.XMPP中定义了三个角色,XMPP客户端,XMPP服务器、网关.通信能够在这三者的任意两个之间双向发生
4.服务器同时承担了客户端信息记录、连接管理和信息的路由功能.网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信)、MSN、ICQ等.基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML

  • XMPP协议结构工作原理

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

XMPP地址格式

  • 一个实体在XMPP网络结构中被称为一个接点,它有唯一的标示符jabber identifier(JID),即实体地址,用来表示一个Jabber用户,但是也可以表示其他内容,例如一个聊天室.
  • 一个有效的JID包括一系列元素:

(1)域名(domain identifier);

(2)节点(node identifier);
(3)源(resource identifier).

它的格式是node@domain/resource,node@domain,类似电子邮件的地址格式.domain用来表示接点不同的设备或位置,这个是可选的,例如a在Server1上注册了一个用户,用户名为doom,那么a的JID就是doom@serverl,在发送消息时,指明doom@serverl就可以了,resource可以不用指定,但a在登录到这个Server时,fl的JID可能是doom@serverl、exodus(如果a用Exodus软件登录),也可能是doom@serverl/psi(如果a用psi软件登录).资源只用来识别属于用户的位置或设备等,一个用户可以同时以多种资源与同一个XMPP服务器连接。

XMPP消息格式

  • XMPP消息格式

概述:XMPP中定义了 3个顶层XML元素: Message、Presence、IQ,下面针对这三种元素进行介绍。
  • Message

1.用于在两个jabber用户之间发送信息。Jsm(jabber会话管理器)负责满足所有的消息,不管目标用户的状态如何。如果用户在线jsm立即提交;否则jsm就存储
2.To :标识消息的接收方。
3.From : 指发送方的名字或标示(id)
4.Text: 此元素包含了要提交给目标用户的信息。

  • Presence

1.用来表明用户的状态,如:online、away、dnd(请勿打扰)等
2.当用户离线或改变自己的状态时,就会在stream的上下文中插入一个Presence元素,来表明自身的状态

  • IQ

1.一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应.例如,client在stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个里面是请求的结果:<iq > 主要的属性是type
2.包括:Get :获取当前域值。Set :设置或替换get查询的值。Result :说明成功的响应了先前的查询.Error: 查询和响应中出现的错误。

写在后面的话

感觉写到上面的时候停笔就等于没有写,在这里在进行归纳个人理解,如有人发现理解错误,欢迎指正

1.XMPP是可扩展标记语言(XML)的协议,现在分析用于我们的即时聊天功能
2.XMPP在架构的时候实现了很多协议在上面进行了枚举,想知道具体是什么,可以根据上面的链接进行点击查询
3.XMPP协议网络架构有三个组成部分:(1)XMPP客户端(2)XMPP服务器(3)XMPP网关
4.XMPP客户端:可以理解就是手机端或者PC端(要满足一些最基本的配置,就像手机要有电才算手机一样)
5.XMPP服务器:代码包组成的模块化服务器,监听客户端连接,和其他 XMPP 服务器通信
6.XMPP网关:和其他的系统交换信息,进行转化通讯
7.XMPP消息格式:3个顶层XML元素: Message、Presence、IQ,里面分别有特定的格式,我们在开发的过程中根据格式进行开发就好了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值