本篇文章给大家分享的是有关web消息推送的各种解决办法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

  在各种BS架构的应用程序中,往往都希望服务端能够主动地向客户端推送各种消息,以达到类似于邮件、消息、待办事项等通知。往BS架构本身存在的问题就是,服务器一直采用的是一问一答的机制。这就意味着如果客户端不主动地向服务器发送消息,服务器就无法得知如何给客户端推送消息。

  web消息推送方法

  随着HTML、浏览器等各项技术、标准的发展,依次生成了不同的手段与方法能够实现服务端主动推送消息,它们分别是:AJAX,Comet,ServerSent以及WebSocket。

 小编将对上述提及到的各种技术手段进行直白化的解释。

  web消息推送手段

  AJAX

  正常的一个页面在浏览器中是这样工作的:

  用户向给予浏览器一个需要访问的地址

  浏览器根据这个地址访问服务器,并与服务器之间创建一个TCP连接(HTTP请求)

  服务器根据这个地址和一些其它数据,组建一段HTML文本,将写入TCP连接,然后关闭连接

  浏览器得到了来自服务器的HTML文本,解析并呈现了浏览器上给用户浏览

  此时,用户点击了网站上任何一个<a>或触发任何一个<form>提交时:

  浏览器根据form的参数或者a的参数,作为访问的地址

  与服务器创建TCP连接

  服务器组建HTML文本,然后关闭连接

  浏览器将当前显示的页面摧毁,并按照新的HTML文本呈现一个新的页面给用户

  我们不难发现的是整个过程中间,一旦建立了一个连接,页面就无法再维护住了。整个过程看上去有点强买强卖,也许我只要一杯新的可乐,但你非要给我一整个套餐组合。

  此时我们可以了解一下XmlHttpRequest组件,这个组件提供我们手动创建一个HTTP请求,发送我们想要的数据,服务器也可以只返回我们想要的结果,最大的好处是,当我们收到服务器的响应时,原来的页面没有被摧毁。这就好比,我喊一句"我的咖啡喝完了,我要续杯",然后服务员就拿了一杯咖啡过来,而不是会把我没吃完的套餐全部倒掉。