2016-03-06 91 views
0

我想創建一個應用程序,其中第3頁的用戶開始通過sockjs websocket進行通信(它們通過page1和page2到達第3頁)。代碼工作正常,但我不知道爲什麼!

在應用程序內部打開Sockjs

// Global scope 
var sock; 

// Inside a function page3, this is invoked when Page3 loads for the first time 
function page3(){ 
    // Local scope 
    sock= new SockJS("localhost:8080/messages); 
    sock.onopen= function(){ 
    .... 
    }; 

    sock.onmessage= function(data){ 
    .... 
    }; 
} 

我的問題是 - 當從服務器如何sock.onmessage通過執行程序訪問,即使它「看到」僅在第3頁裝在第一時間這是當function page3()被稱爲發送的消息?

回答

0

找到我自己的答案。

該問題實際上與客戶端上的事件偵聽器的可見性有關。對此的答案是 - 客戶端上的所有事件監聽器一旦被激活(程序執行流程已「看到」它們)將保持活動狀態,直到它們被移除。

因此,在上述情況下,即使function page3()被「看到」程序執行一次 - 當第3頁被加載的第一次,sock.onmessage被激活作爲page3()函數呼叫期間(客戶端)事件偵聽器,並繼續保持直到套接字關閉。

因此,不需要明確的page3()函數調用來觸發sock.onmessage。它(sock.onmessage)將繼續監聽服務器發送的套接字事件。

0

貌似sock沒有進口(該錯誤消息說,這是什麼未定義)

或許,如果你能分享更多的代碼,我們可以看到爲什麼

相關問題