XMPP:XMPP是基于XML的点对点通讯协议,The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)。
XMPP可用于服务类实时通讯,表示和需求响应服务中的XML数据元流失传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。

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

1.1XMPP中的常用对象
XMPPStream:xmpp基础服务类
XMPPRoster:好友列表类
XMPPRosterCoreDataStoreage:好友列表(用户账号)在core data中的操作类
XMPPvCardCoreDataStorage:好友名片(昵称、签名、性别、年龄等信息)在core data中的操作类
XMPPvCardTemp:好友名片实体类,从数据库里面取出来的都是它
xmppvCardAvatarModule:好友头像
XMPPReconnect:如果失去连接,自动重连
XMPPRoom:提供多用户聊天支持
XMPPPubSub:发布订阅

1.2登录操作,也就是连接xmpp服务器
XMPP的地址叫做JabberID(简写为JID),它用来标识XMPP网络中的各个XMPP实体,JID由三个部分组成:domain、node identifier和resource。JID中domain是必不可少的部分。注意:domain和user部分是不分大小写的,但是resource区别大小写。
domain:通常指网络中的网关或者服务器。
node identifier:通常表示一个向服务器或者网关请求和使用网络服务的实体(比如一个客户端),当然它也能够表示其他的实体(比如在多用户聊天系统中的一个房间)。
resource:通常表示一个特定的会话(与某个设备),连接(与某个地址),或者一个附属于某个节点ID实体相关实体的对象(比如多用户聊天室中的一个参加者)。
JID种类有:
bare JID:user@domain.tld
full JID:user@domain.tld/resource
如:
tom@jabber.org:表示服务器jabber.org上的用户tom
room@service:一个用来提供多用户聊天服务的特定的聊天室。这里“room”是聊天室的名字,“service”是多用户聊天服务的主机名。
room@service/nick:加入了聊天室的用户nick的地址。这里“room”是聊天室的名字,“service”是多用户聊天服务的主机名,“nick”是用户在聊天室的昵称。
为了表示JID,xmpp也有自己的URI,例如xmpp:stpeter.org,默认规则是在JID前加xmpp:。

代码我就不贴了,需要的下载即可
QQ截图20190731170937.png

DEMO下载:点击下载

最后修改:2019 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏