2011-02-09 73 views
1

我有2個單獨的頁面,每個頁面打開一個Web套接字到服務器,一個頁面觸發一條消息到服務器,有什麼辦法,其他頁面可以接收答覆?任何幫助是極大的讚賞。從另一個瀏覽器的網絡套接字接收返回的消息

由於

第一頁,連接並等待消息

<html> 
<head> 
<script type="text/javascript" charset="utf-8"> 
    if("WebSocket" in window) { 
     var ws = new WebSocket("ws://localhost:12345/server.php"); 
    } 
    function startSocket() { 
     if("WebSocket" in window) { 
      ws.onopen = function (event) { 
       document.getElementById('status').innerHTML = "open: " + this.readyState; 
      } 

      ws.onmessage = function (message) { 
       alert(message.data);  
      } 
     } 
    } 
</script> 

</head> 
<body onLoad="startSocket()"> 
<div id="status"> 

</div> 
<div id="stock"> 

</div> 
</body> 
</html> 

第二頁通過web SCOKET發送消息給服務器

<html> 
<script type="text/javascript" charset="utf-8"> 
    if("WebSocket" in window) { 
     var ws = new WebSocket("ws://localhost:12345/server.php"); 
    } 
    function startSocket() { 
     if("WebSocket" in window) { 
      ws.onopen = function (event) { 
       document.getElementById('status').innerHTML = "open: " + this.readyState; 
      } 
     } 
    } 
    function send() {    
     var text = "hello"; 
     try { 
      ws.send(text); 
     } catch (exception) { 
      alert(exception.Description); 
     } 
    } 
</script> 

<body onLoad="startSocket()"> 
<div id="status"></div> 
<div id="stock"></div> 
<button onClick="send();">Left!</button> 
</body> 
</html> 

回答

2

如果第二頁是由第一產生和給定一個名稱並且它們都位於同一個域中,則可以使用其名稱訪問第二頁中的腳本。

與將信息從iframe傳遞到其包含的網頁完全相同。如果兩個頁面位於不同的域中,那麼安全性會阻止這種工作,因爲這將成爲XSS攻擊的目標。

DC

在您的示例中,頁面之間沒有通信。從你的評論我看到你正試圖實現一個聊天系統。所以他們不能互相交談。

對不起,我認爲這兩個頁面都託管在同一瀏覽器中。

當你連接到server.php你沒有連接到同一個腳本兩次,你連接到同一個腳本的兩個獨立副本。所以除非你在服務器php上做一些工作來獲取消息並返回它,否則不會傳遞消息

默認情況下,server.php將在30秒後斷開連接。所以你需要禁用它。

你所試圖做的是要複雜得多,你似乎意識到

DC

+0

這是兩個獨立的pagesone可以一臺機器,另一個是關於在不同的機器一半環遊世界運行,但他們都在同一個域 – 2011-02-09 08:34:42