当前位置: 首页 > 工具软件 > BOSH > 使用案例 >

BOSH、长连接和短连接、http的理解

强保臣
2023-12-01

Bidirectional-streams Over Synchronous HTTP (双向同步)(BOSH) 是一种传输协议。
它可以利用同步的HTTP协议模拟两个实体(例如客户端-服务端)双向流传输,而不需要轮询或异步组件。
对于那些同时需要“推”和“拉”技术的应用程序,BOSH明显比AJAX等基于HTTP协议的技术更高效,更节约资源。相比HTTP轮训技术(如Comet技术),BOSH有着更高的效率和更低的延迟。到目前为止,BOSH主要用于Jabber/XMPP客户端-服务器之间的数据传输(如web端和手机客户端之间的通讯)。然而BOSH并非为XMPP定制的,它也可以用于别的传输。
XMPP基于BOSH定义了相关标准,用于XMPP数据传输。这个解决方案主要是为了解决HTTP协议无法保持TCP长连接的问题。


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
下面就是一些使用长连接和短连接之间的差别:
1)
长连接:一般俗说的长连接是指一直连着,eg:smtp,pop3,telnet
短连接:就是请求一次,连接一次,断开一次,都指的tcp。比如http 1.0


2)
短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接;
长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接


3)
长连接:多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。
短连接:web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。


&&&&&&&&&&&&&&&&&&&&&&&&&
http协议的理解:
为什么说http协议是无状态的,无连接(或者说是短连接):

无状态:——> 因为使用HTTP协议是不能进行用户状态的跟踪的!也就是说在客户端浏览器与服务器之间的请求和响应结束后在服务器上并不保存任何客户端的信息,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

或者说:http是基于tcp(提供面向连接的服务)的连接,所以请求和接收的过程是可靠的(两边的到达时准确的),即使在传输的过程中出现丢失或乱序的问题,也有传输层以及一些低层协议去解决,web浏览器与web服务器进程不需要干预。同时像上面所说的,不保存请求的用户状态以及信息,所以每一请求都是必答的(即为:web服务器进程不错哦啊村发送请求的web浏览器进程的任何信息——+————> 无状态协议)。


无连接(短连接):——> 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP协议是无状态协议。    


&&&&&&&&&&&&&&&&&&&&&&&&&&&&
web浏览器使用的是http协议,所以是不能够理解xmpp协议的,所以需要BOSH 将xmpp的长连接、有状态的方式转化为无状态、无连接的方式来给http来进行访问。
即为:BOSH 是中间人   无状态 ,短连接(web 短连接) <——  ——————> 有状态、长连接(xmpp应该是服务器端)
  也就是BOSH在这里是“连接管理器”。


&&&&&&&&&&&&&&&&&&&&&&&&&&&&
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。


同源策略——————> 安全策略,所谓同源是指,域名,协议,端口相同。
eg:当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。


punjab 是一个采用Twisted Python 网络库写的Python的守护进程。
守护进程:在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。




xmpp:是一种即时通讯的协议。client————> server(route) ————————> client   
http:是一种客户端和浏览器之间的信息交流的方式。用于从WWW服务器传输超文本到本地浏览器的传送协议。




xmpp的讲解连接
http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html


一个ios中的例子:
http://www.cocoachina.com/bbs/read.php?tid-151099-page-1.html


xmpp产品的一个链接:
http://www.shiku.co/


http的理解:
http://www.blogjava.net/zjusuyong/articles/304788.html


flXHR 是一个开源库,是一个可以使用的子js上的一个开源库。
strophe(诗节)也是一个开源的js库,(里面包含有相应的c库)
//上面两个库在引入的时候,引入这两个文件的同时还是需要引入两个库的共同的插件。












 类似资料: