2015-10-11 68 views
2

我使用的是角度ui,我創建了一個指令,它的控制器監聽websockets服務器並檢索數據,實際上它工作正常,但是當離開載入指令的頁面時,套接字客戶端仍在監聽,我的問題如何暫停監聽,直到用戶打開再次加載該指令的頁面,然後繼續監聽?如何在重新加載頁面時暫停監聽ng Websocket?

我使用這個模塊:https://github.com/wilk/ng-websocket

什麼是暫停監聽並恢復它的最好方法是什麼?並且停止收聽並重新開始是否有效?這種方法有什麼好處和壞處?

編輯:添加一些代碼,以澄清

function startWS(host, port, token) { 
     ws = $websocket.$new({ 
      url: 'ws://' + host + ':' + port + '?token=' + token, 
      reconnect: true, 
      reconnectInterval: 500 
     }); 

     ws.$on('$open', function() { 
      console.log('Web Socket Opened'); 
     }); 

     ws.$on('$close', function() { 
      console.log('Web Socket Closed'); 
     }); 

     ws.$on('$message', function (action) { 
      console.log(action); 
     }); 
    } 

這個功能是用於連接到WebSocket的,我需要一些其他的功能,暫停此偵聽等爲恢復功能。

+0

分享您的一些代碼可以幫助人們找到解決問題的方案。 :) – toskv

+1

現在增加了一些代碼,沒有具體的,我問一個概念,是否有效? – Med7at

+0

您無法暫停,但可以關閉並重新打開連接。 設置'reconnect:false'設置* – muaaz

回答

0

我認爲這取決於控制器/指令被調用的頻率。您可以觀察指令範圍上的$ destroy事件。然後你可以關閉連接。但是這會導致很多重新連接。我可能會在app init上設置連接並依賴該連接。你可以設置一個額外的布爾值來定義是否應該忽略來自websocket服務器的消息。這個布爾值必須在您的應用程序中全局可用。我希望我能理解你的問題。

相關問題