关于xmpp协议的即时通讯分析
来源:互联网 发布:淘宝店刷信誉可靠吗 编辑:程序博客网 时间:2024/05/20 13:36
一、常见即时通讯实现
socket
openfire+asmack
环信
信鸽
融云
二、XMPP优势
1. 开放性
XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。
2.跨平台
客户端只要基于XMPP协议,不管是什么平台(包括不同的移动终端)都可以互联互通。
三、XMPP协议简介
The Extensible Messaging and Presence Protocol (可扩展通讯和表示协议) XMPP 以 Jabber 协议为基础,而 Jabber 是即时通讯中常用的开放式协议。
数据格式
XML是XMPP系统架构的核心。它能表述几乎任何一种结构化数据。特别是XMPP利用XML数据流进行客户端一服务器端、服务器端一服务器端的通信。XML数据流一般是由客户端发起至服务端,XML数据流的有效时间直接与用户的在线会话有效时间相关联。
XMPP 的特点是将复杂性从客户端转移到服务器端。这使得客户端编写变得非常容易,更新系统功能也同样变得容易。
XMPP中定义了三个角色:XMPP客户端、XMPP服务器、网关。
客户端:通过 TCP 套接字与XMPP 服务器进行通信
服务器:同时承担了客户端信息记录、连接管理和信息的路由功能
网关:承担着与异构即时通信系统的互联互通(异构系统可以包括SMS(短信),MSN,ICQ等)
五、XMPP协议的地址格式(标志)
每个客户端需要拥有一个地址标识用于定位,XMPP 中称之为 JID (Jabber ID)。地址标识的格式如下
[ node "@" ] domain [ "/" resource ]
例如:
charley@gmail.com/spark
格式与 Email 地址格式类似,但增添了 resource 项(非必需的)。上述例子可以解释为:在 gmail.com 服务器注册的 charley用户,且使用 spark客户端软件登录。资源(resource )只用来识别属于用户的位置或设备等,一个用户可以同时以多种资源与同一个XMPP服务器连接(说白了就是用于支持同一账号的多客户端登录)。
六、协议消息格式
XMPP协议包括3个顶层XML元素:Message、Presence和IQ。
Message用来表示传输的消息,当用户发送一条消息时。就会在流的上下文中插入一个Message元素,中间有用户发送的相关信息;
Presence用来表示用户的状态。当用户改变自己的状态时。就会在数据流的上下文中插入一个Presence元素,用来表示用户现在的状态;
IQ用来表示一种请求,响应机制,从一个实体发送请求,另外一个实体接受请求并响应。
XMPP特点
1.客户端通过TCP/IP协议连接到服务器,然后通过XML传输数据。
2.XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。
- 关于xmpp协议的即时通讯分析
- 关于XMPP即时通讯协议的使用
- 基于XMPP协议的即时通讯
- 关于xmpp的协议原理分析
- 基于xmpp协议的多端即时通讯方案
- 即时通讯XMPP协议的原理介绍
- 记XMPP即时通讯协议的认识
- Android基于XMPP协议的即时通讯
- 即时通讯协议-XMPP
- xmpp 即时通讯协议研究
- XMPP即时通讯协议
- [汇文教育]关于XMPP协议来来实现IOS中即时通讯的浅谈
- Jabber 协议概述XMPP即时通讯
- 基于XMPP协议的即时通讯工具的客户端实现原理
- 基于XMPP协议的即时通讯工具的客户端实现原理
- 基于XMPP协议的即时通讯工具的服务器端实现
- 基于XMPP协议的手机多方多端即时通讯方案
- 基于XMPP协议的手机多方多端即时通讯方案
- 详述用html5 canvas实现的类似于天猫的购物进度反馈/订单跟踪
- python学习(15)——常见错误集锦
- 使用multipart请求处理文件上传
- 在64位ubuntu上编译kitkat4.4时遇到HashSet_jni.h错误导致编译中止的问题
- 【RabbitMQ】生产者,消费者,信道,队列,交换器和绑定
- 关于xmpp协议的即时通讯分析
- 基于注解的AOP实现
- 交换排序——冒泡排序
- POJ 3281 Dining
- MySQL预编译模糊查询出现错误,最后自己给解决了, 希望对大家有所帮助
- 权限由shiro控制后 如何在 web.xml中拦截404 500等等异常
- Bellman-Ford算法
- D3.js制作二维坐标轴基本入门
- Tcp套接字