一般状况下,不管是web浏览器仍是移动app,咱们与服务器之间的交互都是主动的,客户端向服务器端发出请求,而后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客户端请求--服务端响应,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来讲显得捉襟见肘,尤为在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用常常面临的问题,好比金融证券的实时信息,Web 导航应用中的地理位置获取,社交网络的实时消息推送,新闻的订阅,天气的提醒等。这些状况下,须要服务器主动推送消息给客户端。web
那么在这样的模式下,会有几个问题须要咱们思考下:ajax
1.应用服务器如何肯定每个应用所在的设备跨域
2.服务器端是如何将消息推送到客户端的,客户端又不像服务器有一个固定的地址浏览器
带着这些疑问咱们来研究一下目前有哪些技术能够解决该问题:服务器
所谓的Ajax轮询,其实就是定时的经过Ajax查询服务端,客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后立刻返回响应信息并关闭链接。websocket
这种技术方式实现起来很是简单,可是这种方式会有很是严重的问题,就是须要不断的向服务器发送消息询问,这种方式会对服务器形成极大的性能浪费。网络
还有一个相似的轮询是使用JSONP跨域请求的方式轮询,在实现起来有差异,但基本原理都是相同的,都是客户端不断的向服务器发起请求。并发
优势app
实现简单。socket
缺点
这是经过模拟服务器发起的通讯,不是实时通讯,不顾及应用的状态改变而盲目检查更新,致使服务器资源的浪费,且会加剧网络负载,拖累服务器。
二,WebSocket
WebSocket是HTML5开始提供的一种在单个 TCP 链接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocketAPI被W3C定为标准。在WebSocket API中,浏览器和服务器只须要作一个握手的动做,而后,浏览器和服务器之间就造成了一条快速通道。二者之间就直接能够数据互相传送。
因为websocket技术要说明白的话所须要的篇幅不小,因此会在以后的单独文章中介绍下websocket的使用方式,这里就不作详细的说明了。