现在的位置: 首页 > web前端 > 正文

web消息推送的各种解决办法

2020年07月09日 web前端 ⁄ 共 855字 ⁄ 字号 评论关闭

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


  web消息推送方法


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


  本篇文章将对上述提及到的各种技术手段进行直白化的解释。


  web消息推送手段


  AJAX


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


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


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


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


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


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


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


  与服务器创建TCP连接


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


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


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


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


  总之,web消息推送手段给大家简单的介绍了一些,希望大家多看看。

抱歉!评论已关闭.