pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

HTML5 通信API 跨域門檻將不再高、數據推送也不再

HTML5 通信API 跨域門檻將不再高、數據推送也不再是夢_html5教程技巧HTML5中文學習網,是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網站、HTML5資訊、HTML5應用
點評:HTML5新增通信相關兩個API,跨文檔消息傳輸與WEB Sockets API,跨文檔消息傳輸功能,可以在不同網頁文檔,不同端口(跨域情況下)進行消息傳遞。使用web sockets api 可以讓客戶端與服務器端通過socket端口傳遞數據,這樣便可以使用數據推送技術
前言

HTML5新增通信相關兩個API,跨文檔消息傳輸與WEB Sockets API,

跨文檔消息傳輸功能,可以在不同網頁文檔,不同端口(跨域情況下)進行消息傳遞。

使用web sockets api 可以讓客戶端與服務器端通過socket端口傳遞數據,這樣便可以使用數據推送技術。

跨文檔消息傳輸

在之前我們若想跨域獲取信息會花很多功夫,現在只要獲取網頁所在窗口對象實例變可以實現互相通信。

首先要想從其他窗口接受發過來的消息需要對其窗口對象進行監聽:

window.addevntListener('message', function () {}, false)

使用windows對象的postMessage方法向其他窗口發生信息:

otherWindow.postMessage(message, targetOrigin)第一個參數為發送文本,也可以是js對象(json)第二個參數為接收消息對象窗口的URL,可以使用通配符

簡單示例:

復制代碼
代碼如下:

post信息
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
window.addEventListener('message', function (ev) {
//應該要檢查消息來源
$('#msg_box').html(ev.origin + ' 發來消息:' + ev.data);
}, false);

$('#send').click(function () {
var frame = window.frames[0];
frame.postMessage($('#msg').val(), 'http://localhost:3317/html5%E4%B8%8Ecss3/06%E9%80%9A%E8%AE%AFapi/02.htm');
});
});

</script>
</head>
<body>
<input type="text" id="msg" />
<button id="send">
發送信息</button>
<iframe src="02.htm" width="400"></iframe>
<div id="msg_box">
</div>
</body>
</html>

在以上基礎上我們做一點修改,我們在子頁面給出高寬按鈕,用于告訴父窗口怎么改變iframe高寬:

復制代碼
代碼如下:

父層代碼
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
window.addEventListener('message', function (ev) {
//應該要檢查消息來源
$('#msg_box').html(ev.origin + ' 發來消息:' + ev.data);

var w_h = ev.data;
//未做格式檢查
$('#f').css('width', w_h.split(',')[0] + 'px');
$('#f').css('height', w_h.split(',')[1] + 'px');

}, false);

function p() {
var frame = window.frames[0];
frame.postMessage($('#msg').val(), 'http://localhost:3317/html5%E4%B8%8Ecss3/06%E9%80%9A%E8%AE%AFapi/02.htm');
}
$('#send').click(function () {
p();
});
setTimeout(p, 200);

});

</script>
</head>
<body>
<input type="text" id="msg" />
<button id="send">
發送信息</button>
<iframe src="02.htm" width="400" id="f"></iframe>
<div id="msg_box">
</div>
</body>
</html>


復制代碼
代碼如下:

子層代碼
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var url = '';
var source = '';
window.addEventListener('message', function (ev) {
//此處需要做來源驗證
if (ev.origin) { }
$('#msg').html(ev.origin + ' 發來消息:' + ev.data);
url = ev.origin;
source = ev.source;
//ev.source.postMessage('這里是:' + this.location, ev.origin);
});

$('#send').click(function () {
source.postMessage($('#w_h').val(), url);
});
});
</script>
</head>
<body>
<div id='msg'>
</div>
<input type="text" id="w_h" />
<button id="send">
改變外層高度</button>
</body>
</html>

最后為我們的e截個圖:

更加靈活的運用,該api還可以更厲害的運用,我們可以傳遞函數名什么的,反正可做很多事情了。

web sockets 通信

web sockets 是HTML5提供的在web應用程序中客戶端與服務器端之間進行非HTTP的通信機制

他實現了http不容易實現的服務器的數據推送等智能通信技術,因此受到了很高的關注。

使用web sockes api 可以在服務器端與客戶端建立非HTTP的雙向連接,這個連接是實時的也是永久的,除非顯式關閉

這意味著當服務器想向客戶端發送數據時,可以立即將數據推送到客戶瀏覽器中,無需重新建立連接。

只要客戶端有一個被打開的socket并且與服務器建立了連接,服務器就可以將數據推送到這個socket上,服務器不再需要輪詢客戶端請求,化被動為主動。

web sockets api

復制代碼
代碼如下:

var webSocket = new WebSocket('ws://localhost:8005/socket');
url必須使用ws或者wss(加密)作為頭,這個url設定好后,在javascript腳本中可以通過訪問websocket對象的url來重新獲取
通信建立連接后,就可以雙向通信了,使用websocket對象的send方法加json數據便可將任何形式數據傳往服務器:</p><p>webSocket.send(msg);
通過onmessage事件來接收服務器傳送過來數據:
webSocket.onmessage = function (e) {
  var data = e.data;
};
通過onopern事件監聽socket打開事件:
webSocket.onopen = function (e) { };
通過onclose監聽socket關閉事件:
webSocket.onclose = function (e) {};
通過webSocket.close()方法關閉socket連接;</p><p>通過readyState屬性獲取websocket對象狀態:
CONNECTION 0 正在連接
OPEN 1 已經連接
CLOSING 2 正在關閉
CLOSE 2 已經關閉

PS:,因為我不會配置服務器塊的socket相關,所以暫時不能進行測試,該問題留待二次學習時解決。

整個代碼還是很簡單的:

復制代碼
代碼如下:

// 創建一個Socket實例
var socket = new WebSocket('ws://localhost:8080'); </p><p>// 打開Socket
socket.onopen = function(event) { </p><p> // 發送一個初始化消息
socket.send('I am the client and I/'m listening!'); </p><p> // 監聽消息
socket.onmessage = function(event) {
console.log('Client received a message',event);
}; </p><p> // 監聽Socket的關閉
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
}; </p><p> // 關閉Socket....
//socket.close()
};


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了有關HTML5頁面在iPhoneX適配問題,需要的朋友可以參考下
本篇文章主要介紹了html5中canvas圖表實現柱狀圖的示例,本文使用canvas來實現一個圖表,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
Adobe公司出品的多媒體處理軟件產品線較多,涵蓋了音視頻編輯、圖像處理、平面設計、影視后期等領域。這篇文章主要介紹了Adobe Html5 Extension開發初體驗圖文教程,非常不錯,需要的朋
這篇文章主要介紹了基于HTML5的WebGL經典3D虛擬機房漫游動畫,需要的朋友可以參考下
這篇文章主要介紹了html5實現移動端適配完美寫法,需要的朋友可以參考下
本篇文章主要介紹了HTML5響應式(自適應)網頁設計的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 锂离子电池厂家-山东中信迪生电源 | 浙江富广阀门有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 办公室家具_板式办公家具定制厂家-FMARTS福玛仕办公家具 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 开云(中国)Kaiyun·官方网站-登录入口 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 上海佳武自动化科技有限公司 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 |