HTML5中跨文档通信

 首先要介绍Messaging API,因为Web Worker和Web Socket都使用这一共同通信方法,所以作为一个通信的基本知识。

 HTML5提供了在网页文档之间相互接收与发送信息的功能。使用这个功能,只要获取到窗口对象的实例,不仅同源同策(域+端口号)的Web网页之间可以相互通信,甚至可以实现跨域通信。

  • 同域下的跨文档通信

同域跨文档指的是在相同域名下不同文档的通信。我们可以借助iframe标签来进行数据之间的通信。

iframe标签可以嵌套另一个标签,并且可以通过js去访问被包含的页面的window对象。

注:我们需要在相同的网站下,建立不同的文件,才能达到跨文档通信效果。在使用iframe进行通信时会产生一个contentWindow这个对象。

  • 不同域下的跨文档通信

HTML5提供了在网页之间互相进行接受与发送消息的功能;可以获取到网页所在窗口的实例,不同源(域+端口号)的web网页之间的相互通信,也可以实现跨域通信。

注:想要接受从其它窗口发过来的消息,就必须对窗口对象进行监听。

监听方法:

window.addEventListener("message", function(e){...}, false);

发送消息方法:

otherWindow.postMessage(message,targetOrigin)

该方法有两个参数:

第一个参数为所发送的消息文本,但也可以是任何的javascript对象(通过json转换对象为文本);

第二个参数为接受信息的对象窗口的url地址(http:localhost:8080)

  • jsonp实现跨域请求

  • 同源策略

浏览器有一个很重要的概念就是同源策略(Same-Origin Policy)。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

  • JSONP

JSONP(JSON with Padding)是JSON的一种”使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 www.a.com 的网页无法与不是 www.a.com的服务器沟通,而 HTML 的script 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

​​​​​​​

后台PHP

 

  • 了解websocket工作机制

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。Tcp/ip协议

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

如图:

猜你喜欢

转载自blog.csdn.net/weixin_42535823/article/details/82883410
今日推荐