WebSocket跨域問題解決


  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 還是免費的,可以嘗試一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM