2015-04-04 80 views
0

如何刪除客戶端套接字上的特定偵聽器。我需要刪除監聽器,因爲這個控制器可以被初始化多次。並且我不想在每次初始化控制器時向套接字添加新的偵聽器。SocketIO 1.3.2刪除列表,客戶端

function EventMessagesController($scope,socket, $rootScope) { 

socket.on('message', function (message) { 
    //Handle messsage 
}) 

$scope.$on("$destroy", 
    function handleDestroyEvent() { 
     socket.manager().removeListner('message'); 
    } 
); 
} 

任何幫助,將不勝感激。套接字IO文檔不是最清楚的,我不能找出源代碼中的答案。

+0

您不應該從控制器內部初始化套接字事件來開始。將它移出到一個服務,並要求服務進入你的應用程序,而不是控制器..或類似的東西,主要目的是它只被調用一次,獨立於路由和/或控制器。 – laggingreflex 2015-04-04 21:13:19

回答

0

一個socket.io套接字是一個eventEmitter,所以你可以看到各種方法來刪除事件監聽器here in the doc for eventEmitter

你必須要使用的選項:

socket.removeListener(event, listener) 
socket.removeAllListeners([event]) 

注:在你的問題removeListner代碼拼寫錯誤。

+0

非常感謝。 – manukyanv07 2015-04-05 23:03:24