zoukankan      html  css  js  c++  java
  • HTML5与CSS3权威指南.pdf5

    第9章 通信API

    跨文档消息传输

    HTML5提供了网页文档之间互相接收与发送信息的功能,不仅同源(域+端口号)的Web网页之间可以互相通信,甚至可以实现跨域通信

    想要接受从其他窗口发过来的信息,要对窗口对象的message事件进行监视

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

    使用window对象的postMessage方法向其他窗口发送消息

    otherWindow.postMessage(message,targetOrigin);

    第一个参数为所发送的消息文本,也可以是任何的Javascript对象(通过JSON转换对象为文本);第二个参数为接受消息的对象窗口的URL地址(例如http://localhost:8080/),可以使用通配符“*”指定全部地址。otherWindow为要发送窗口对象的引用,可以通过window.open返回该对象,或通过对window.frames数组指定序号返回单个frame所属的窗口对象

    1)通过访问message事件的origin属性,可以获取消息的发送源(发送源与网站的URL地址不是同一概念,发送源只包括域名与端口号,最好检查发送源)

    2)message事件的data属性,可以获取消息内容(可以是任何Javascript对象)

    3)postMessage方法发送消息

    4)通过访问message事件的source属性,可以获取消息发送源的窗口对象(准确的说是窗口的代理对象)

    JSON对象的stringify方法将Javascript对象转换成文本,使用parse方法将文本还原为Javascript对象,任何Javascript对象可以通过这种方式在网页文档、端口、域之间传递消息

    Web Sockets通信

    Web Sockets是HTML5提供的在应用程序中客户端与服务器端之间进行的非HTTP通信机制,它实现了用HTTP不容易实现的服务器端的数据推送等智能通信技术

    建立一个非HTTP的双向连接(实时永久,除非被显式关闭),客户端只要有一个被打开的套接字与服务器建立了连接,服务器就可以把数据推送过来,从被动到主动

    使用Web Socket API

    将URL字符串作为参数,然后调用构造器

    var webSocket=new WebSocket("ws://localhost:8005/socket");

    URL字符串必须以“ws”、“wss(加密通信时)”文字作为开头,javascript脚本中可以通过访问WebSocket对象的url属性来重新获取,使用WebSocket对象的send方法对服务器发送数据

    webSocket.send("data");

    通过获取onmessage事件句柄来接收服务器传过来的数据

    webSocket.onmessage=function(event){

        var data=event.data;

        ...

      }

    通过获取onopen事件句柄来监听socket的打开事件

    webSocket.onopen=function(event){

        //开始通信时的处理

      };

    获取onclose事件句柄来监听socket的关闭事件

    webSocket.onclose=function(event){

        //通信结束时的处理

      };

    通过使用close方法来关闭socket,切断通信连接

    webSocket.close();

    另外还可以通过读取readyState属性值来获取WebSocket对象的状态

    CONNECTING(数字为0)表示正在连接  OPEN(数字为1)表示正在建立连接  CLOSING(数字为2)表示正在关闭连接  CLOSED(数字为2)表示已关闭连接

    第10章 使用Web Workers处理线程

    var worker=new Worker("worker.js");

    需要注意的是,后台线程中不能访问页面或窗口对象,如果使用到则会引发错误

    在后台线程中接收消息

    worker.onmessage=function(event){

        //处理接收到的消息

      }

    对后台线程发送消息

    work.postMessage(message);  //文本数据

    线程嵌套:线程中可以嵌套子线程,把一个较大的后台线程切成几个子线程,在每个子线程中完成相对独立的一部分

    在多个子线程中进行数据的交互,步骤如下

    1)先创建发送数据的子线程

    2)子线程执行任务,再传给主线程

    3)再创建一个子线程,将主线程中的数据传给新的子线程

    4)新的子线程执行代码

    线程中可用的变量、函数与类

    self:本线程范围内的作用域

    postMessage(message):向创建的源窗口发送信息

    onmessage:接收消息的事件句柄

    importScript(urls):导入其他Javascript脚本文件,可以是多个,导入的文件与使用该线程文件的页面必须是同一个域、同一个端口中

    importScripts('script1.js','scriptsscript2.js');

    navigator对象:与window.navigator对象类似

    sessionStorage/localStorage:可以在线程中使用WebStorage

    XMLHttpRequest:可以在线程中使用Ajax请求

    Web Workers:可以在线程中嵌套线程

    setTimeout()/setInterval():线程中实现定时处理

    close:结束本线程

    eval()、isNan()等:可以使用Javascript核心函数

    object:可以创建和使用本地对象

    WebSockets:可以使用WebSocketsAPI向服务器发送和接收信息

  • 相关阅读:
    centos和ubuntu配置路由的三种方式
    程序包编译安装
    逻辑卷磁盘管理和dd命令
    linux磁盘管理
    CDOJ 1269 ZhangYu Speech 数组处理
    poj 2236 Wireless Network 并查集
    poj 1182 食物链 并查集
    POJ 2109 Power of Cryptography 数学题 double和float精度和范围
    CDOJ 1264 人民币的构造 区间问题+数论
    CDOJ 1263 The Desire of Asuna 贪心
  • 原文地址:https://www.cnblogs.com/sdgjytu/p/3902747.html
Copyright © 2011-2022 走看看