有关于webSocket的详情

大家都知道,Web应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接受请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高,海量并发的应用来说显得捉襟见肘,尤其在当今移动互联网崛起的情况下,高并发和用户实时响应是Web应用经常面临的问题,比如金融实时信息,Web应用中的地理位置获取,社交网络的实时消息推送的等.

传统的请求-响应模式的Web开发在此类业务场景的时候,通常采用实时通讯的方案,常见的手法一般有:

1,轮询,原理简单易用,就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的数据同步.问题很明显,当客户端以固定频率向服务器端,发送请求时,服务器端的数据可能并没有更新.浪费带宽,做很多没什么作用的请求.

2,基于Flash,AdobeFlash 通过自己的Socket实现完成数据交换 ,再利用Flash暴露出响应的接口为javascript调用,从而达到实时传输的目的. 此方式比轮询要高效,且因为Flash安装率高,应用场景比较广泛,但在移动终端上Flash的支持并不好, IOS系统甚至不支持. Android虽然支持 但是使用效果总是差强人意.

可以看到,传统Web模式在处理高并发和实时性的请求的时候,会遇到难以逾越的瓶颈,在此背景下 基于Html5规范 有web TCP之称的WebSocket应运而生.

1.WebSocket机制

简单介绍一下

WebSocket是HTML5一种新的协议 .它实现了浏览器与服务器双工通信,能更好的节省服务器的资源达到实时通讯的目的,它建立在tcp之上,同HTTP一样通过TCP来传输数据,它和HTTP最大的不同是:

  (1)WebSocket是一种双向通信协议,类似于长链接,建立之后服务端和客户端都可以发送和接受数据

  (2)WebSocket需要类似TCP的客户端和服务器端通过握手链接,连接成功才能相互通信.

 看下面两张图 就明白了:


1524036972.jpg

1524036984.jpg

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容