XMPP与环信的简单介绍
2016-05-26 11:30
281 查看
XMPP --> 环信
1.XMPP是网络层基于TCP协议,数据层基于XML协议的即时通讯协议。所以要实现通讯的话,就要跟TCP一样,遵循3次握手,建立连接,持有一个长连接,连接期间发送消息,消息的格式就是XMPP,是一个流,可以分段发,别人也可以分段的将消息给我,在stream开始,/stream结束。
弊端
2.网络层: TCP是一种长连接,因为在这个IP不固定的时代,用户锁屏,home,切换其他APP等都会导致自己的TCP连接断开,所以每次都需要再一次重新建立长连接。可以通过心跳轮循(每五秒钟向服务器问一次,每次通过短连接询问,可以用http的GET或者POST)的方式,服务器会告诉你是否有消息,如果有再用XMPP方式请求,请求完毕之后,再把TCP断开,继续心跳轮循。
3.数据层:XML数据体积比较大有冗余,造成不必要的流量浪费,但是没有办法解决。
所以在工作的时候,我们通常用环信来即时通讯,同时环信还集成了第三方登陆,实现登陆功能。
TCP三次握手协议
TCP三次握手
三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
连接建立后,客户端和服务器就可以开始进行数据传输了。
1.XMPP是网络层基于TCP协议,数据层基于XML协议的即时通讯协议。所以要实现通讯的话,就要跟TCP一样,遵循3次握手,建立连接,持有一个长连接,连接期间发送消息,消息的格式就是XMPP,是一个流,可以分段发,别人也可以分段的将消息给我,在stream开始,/stream结束。
弊端
2.网络层: TCP是一种长连接,因为在这个IP不固定的时代,用户锁屏,home,切换其他APP等都会导致自己的TCP连接断开,所以每次都需要再一次重新建立长连接。可以通过心跳轮循(每五秒钟向服务器问一次,每次通过短连接询问,可以用http的GET或者POST)的方式,服务器会告诉你是否有消息,如果有再用XMPP方式请求,请求完毕之后,再把TCP断开,继续心跳轮循。
3.数据层:XML数据体积比较大有冗余,造成不必要的流量浪费,但是没有办法解决。
所以在工作的时候,我们通常用环信来即时通讯,同时环信还集成了第三方登陆,实现登陆功能。
TCP三次握手协议
TCP三次握手
三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
连接建立后,客户端和服务器就可以开始进行数据传输了。
相关文章推荐
- Vue.js-----轻量高效的MVVM框架(十、父子组件通信)
- dtrace-oracle-vage :吕海波
- SQL数据库添加新账号,只操作指定数据库
- 【kate整理】matlab求商,求余数
- HDU 5701 ——中位数计数——————【思维题】
- Python黑魔法,一行实现并行化
- Ajax 对象创建 兼容各个浏览器 通用方法getHTTPObject.js
- thinkphp框架中,URL传参c/123,接收不到参数的问题
- IDEA Webstorm20161.2最新版本的安装方法
- mysql重置密码
- leetcode_Search a 2D Matrix
- 21V版Office365 管理界面更新
- 【算法题】Leedcode 72
- Xcode那些错
- 设计模式:简单工厂模式
- LeetCode 198: House Robber
- php查询小知识
- cssViewer牛逼的chrome插件
- 集成Spring web.xml配置总结
- 选择年份 php的写法要比js简洁一些