websocket协议详解;

websocket是基于http协议,借用http协议来完成连接阶段的握手;

当连接建立后,浏览器和服务器之间的通信就和http协议没有关系了,b、s之间只用websocket协议来完成基本通信。

=========

ajax轮询,其原理让浏览器隔几秒就发送一次请求,询问服务器是否有新的信息。

long poll,原理和ajax差不多,都是基于轮询的方式,不过是采用的阻塞模式。即client发起连接后,如果没有消息,就一直不返回response到客户端,知道有消息菜饭会,返回完之后,客户端在此建立连接,周而复始。下面是long poll的伪代码。

loop(){

if(connction){

request

while(response!=0){

wait;

}

hand the message;

}

}

==从上面的分析可以看到,client都是利用http主动建立连接,等待服务端处理。即服务端不能主动想client推送信息,只能等待client请求,被动回复请求。因为http协议是无状态的。

所以ajax的缺点是很明显,需要服务器有很快的处理速度。

long poll的缺点是则需要较高的并发量。

==websocket登场了,可以解决的问题包括:

1,服务器完成协议升级后http-》websocket,server可以主动想client推送信息。利用client定义的回调函数,来完成。

2,在传统的方式上,要不断建立和关闭http协议,由于http是非状态的,每次都要鉴别identity info(鉴别信息),来告诉server你是谁。

但是websocket只需要将一次http握手,整个的通信过程都是建立在一次连接中,也就避免了hthtp的非状态性。这样将客户主动询问,转换为服务器推送信息才发送信息。

=====

 

原文地址:https://www.cnblogs.com/li-daphne/p/7581665.html