WebSocket protocol是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊,同時允許跨域通訊,是server push技術的一種很好的實現。我們使用Socket.io,它很好地封裝了webSocket介面,提供了更簡單、靈活的介面,也對不支援webSocket的瀏覽器提供了向下相容。
專案中遇到javascript跨域問題,父頁面和子頁面要通訊,並且父子頁面跨域,怎麼辦?
專案中要保證父子頁面通訊是點對點,需要在服務端建立對父子頁面WebSocket的對應關係,即父頁面發的訊息只被子頁面收到,子頁面的訊息也只被父頁面收到我們做了以下工作,嚴格保證了 WebSocket通訊是點對點:
一是建立WebSocket連結的URL加上時間戳保證通訊會話是唯一的;
二是在服務端保證父子頁面WebSocket一一對應關係。父子頁面的WebSocket在Open時都會向服務端發出訊息進行註冊,建立Senssion之間的對應關係。然後父子頁面就可通過雙方約束的通訊協議進行通訊了。
這裡我們寫個demo:
var p = document.getElementsByTagName(‘p’)[0];
var io = io.connect(‘http://127.0.0.1:3001’);
io.on(‘data’,function(data){
alert(‘2S後改變資料’);
p.innerHTML = data
});
伺服器端
var io = require(‘socket.io’)(server);
io.on(‘connection’,function(client){
client.emit(‘data’,’hello WebSocket from 3001.’);
});
今天就說到這裡,希望對大家有所幫助,同時大家如果不想太花時間去做WebSocket這塊,可以嘗試使用三方WebSocket,類似GoEasy 極光之類的。 這裡推薦GoEasy,簡單易用 www.goeasy.io 還是免費的,可以嘗試一下。