即时通讯之xmpp协议简析
2017-05-30 20:58
369 查看
最近的项目用到了阿里百川即时通信云。按照官网的Demo以及官方开发文档集成和开发的过程还是相当的顺利的。因此,今天在这里我并不打算赘述开发过程,而是简单谈一下自己对于即时通信的原理的理解。
目前IM有四种协议:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP。PRIM与XMPP、SIMPLE类似,但已经不再使用了。
在这里,我们来深入的了解一下xmpp协议。
首先,我们下来理解一下xmpp协议是什么?
Xmpp是一种基于xml的协议,即用TCP协议来传递xml数据流。
那么问题来了,为什么事TCP而不是HTTP协议呢?
个人理解:即时通讯,顾名思义信息的交换是实时的,因此需要在通讯双方之间建立一条长连接,而HTTP协议是一种无状态的连接,数据一次交换完之后连接就断开了。这显然与即时通讯的思想史相悖的。
接下来,我们聊一下xmpp的基本网络结构是什么样的。
Xmpp定义了三个角色:客户端、服务器、网关。前面两个自然不用多说,读者应该能明白。网关的主要作用是实现和其他通讯协议或者通信系统的交互而设计的(与计算机网络中的网关的概念是不一样的)。Xmpp基本的网络形式是单个客户端通过TCP\Ip协议连接到但服务器,然后在上面传输xml数据。所以,xmpp实际传输的xml形式的通讯指令。
![](https://img-blog.csdn.net/20170530205819294?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJldHR5X21vb24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Xmpp的工作原理:
所有从一个xmpp client到另一个xmpp client的数据都要通过xml Server。即client 连接到server,server通过本地目录的证书对其进行认证。Client告知server另一个Client的目标地址,server返回对应Client的当前状态,并查找Client并建立连接,之后Client之间就可以交互了。
题外话:既然说到了xml,我想到了最近在面试时遇到的一个比较有意思的问题,在这里贴出来,大家一起讨论着玩。
题目大概是这样的,有几十个GB的xml数据,需要将其解析出来,并将相应节点的数据存储到数据库中,请你设计一种思路,使得效率最高。(强调效率)
有想法的读者在评论区畅所欲言吧,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
目前IM有四种协议:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP。PRIM与XMPP、SIMPLE类似,但已经不再使用了。
在这里,我们来深入的了解一下xmpp协议。
首先,我们下来理解一下xmpp协议是什么?
Xmpp是一种基于xml的协议,即用TCP协议来传递xml数据流。
那么问题来了,为什么事TCP而不是HTTP协议呢?
个人理解:即时通讯,顾名思义信息的交换是实时的,因此需要在通讯双方之间建立一条长连接,而HTTP协议是一种无状态的连接,数据一次交换完之后连接就断开了。这显然与即时通讯的思想史相悖的。
接下来,我们聊一下xmpp的基本网络结构是什么样的。
Xmpp定义了三个角色:客户端、服务器、网关。前面两个自然不用多说,读者应该能明白。网关的主要作用是实现和其他通讯协议或者通信系统的交互而设计的(与计算机网络中的网关的概念是不一样的)。Xmpp基本的网络形式是单个客户端通过TCP\Ip协议连接到但服务器,然后在上面传输xml数据。所以,xmpp实际传输的xml形式的通讯指令。
Xmpp的工作原理:
所有从一个xmpp client到另一个xmpp client的数据都要通过xml Server。即client 连接到server,server通过本地目录的证书对其进行认证。Client告知server另一个Client的目标地址,server返回对应Client的当前状态,并查找Client并建立连接,之后Client之间就可以交互了。
题外话:既然说到了xml,我想到了最近在面试时遇到的一个比较有意思的问题,在这里贴出来,大家一起讨论着玩。
题目大概是这样的,有几十个GB的xml数据,需要将其解析出来,并将相应节点的数据存储到数据库中,请你设计一种思路,使得效率最高。(强调效率)
有想法的读者在评论区畅所欲言吧,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
相关文章推荐
- 关于xmpp协议的即时通讯分析
- 基于xmpp的协议即时通讯软件开发--理论(一)
- XMPP和即时通讯内容学习(一)
- 即时通讯技术概述 (IMPP、IRCP、CPIM、SIMPLE、XMPP、XML、SIP、Jabbe
- iOS基于XMPP实现即时通讯之一、环境的搭建
- 即时通讯有标准 IM的四种即时通讯协议简介
- 【即时通讯】即时通讯及XMPP概述及…
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现 (转)
- Android 即时通讯 XMPP
- 【即时通讯】即时通讯及XMPP概述及…
- Android之即时通讯之基于XMPP(一)-openfire服务端的安装和搭建
- 即时通讯协议对比
- 基于XMPP的即时通信系统的建立(四)— 协议详解
- iOS 开发 XMPP即时通讯项目开发(仿微信)-详解之xmpp环境搭建(数据库/客户端/服务器)
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- 即时通讯框架T-io之WebSocket协议再之HelloWorld
- 基于 XMPP协议的即时消息服务端简单实现
- 02-即时通讯-XMPP 简单介绍
- RFC3921——可扩展的消息和出席信息协议 (XMPP): 即时消息和出席信息