一、跨文档消息传输
要想接受从其余的窗口那里发过来的消息,就必须对窗口对象的message事件进行监视。
window.addEventListener("message",function(ev){...},false);
ev.orgin:获取消息的发送源;
ev.data:消息内容;
ev.source:获取消息发送源的窗口对象。
使用window对象的postMessage方法向其余窗口发送消息。
otherWindow.postMessage(message,targerOrigin);
二、Web Sockets通讯
HTML5提供的在Web应用程序中客户端与服务器端之间进行的非HTTP的通讯机制。
构建链接:var webSocket=new WebSocker("ws://localhost:8081/socket");//URL必须以ws或者wssk开头。
发送消息:webSocket.send("data");
接收服务器消息:
webSocket.onmessage=function(event){
var data=event.data;
}
监听socket打开和关闭事件:
websocket.onopen=function(event){...}
websocket.onclose=function(event){...}
关闭socket:webSocket.close();
readyState属性只能够获取WebSocket对象的状态。
三、使用Web Workers处理线程
建立后台线程:var worker=new Worker("worker.js");//参数为后台线程执行的URL
后台线程不能访问页面或窗口对象。
在后台线程之中接收消息:worker.onmessage=function(event){/*处理收到的消息*/}
对后台线程发送消息:worker.postMessage(message);java
在后台线程中,也能够获取worker对象的onmessage事件句柄和postMessage方法在后台进行消息的发送和接收。web
与线程进行数据交互:获取数据后动态建立页面元素。
线程嵌套:
单层嵌套:在后台线程中再建立线程。
向主页面线程发送消息用的是postMessage,而向子线程用worker.postMessage。
在多个子线程中进行数据的交互:
线程中可用的变量、函数与类:
self,postMessage(message),onmessage,importScript(urls),nacigator对象,sessionStore/localStore,XMLHttpRequest,Web Workers,setTimeout(),setInterval(),close,eval(),isNan(),escape()等javaScript核心函数,object,WebSorckets.服务器