[英]Changing server from client-side on Socket.io
這是我在本網站上的第一個問題。 感謝這個網站,我在Google上的許多問題都得到了解答,但是我找不到問題的答案,或者我只是想不出正確的方式來發布問題。
我有三個Socket.IO服務器,應通過單擊不同的按鈕進行更改。 我的想法是這樣的: var pot_bot = io('12.12.12.12:3222'); pot_bot.on('action', function(data) { console.log('unique data '+data.hi);}); if(button1.clicked) pot_bot = io('12.12.12.12:3223');
var pot_bot = io('12.12.12.12:3222'); pot_bot.on('action', function(data) { console.log('unique data '+data.hi);}); if(button1.clicked) pot_bot = io('12.12.12.12:3223');
一切都正確,問題是當我覆蓋變量pot_bot時,我希望在新服務器發出它時調用.on('action')。 上面的代碼示例並非如此。
有人對此有解決方案嗎?
我建議在覆蓋pot_bot
之前從舊的管理器中刪除事件偵聽器,然后將新的偵聽器綁定到新的偵聽器。 (io會緩存管理器,因此,如果您每次切換回去,您都將恢復原來的管理器,並且如果繼續添加偵聽器而從未刪除它們,則您將在同一管理器上獲得重復的偵聽器)。 您可以將它們全部放在函數中,這樣就不必重復代碼:
function switch_to_server( new_uri ) {
pot_bot && pot_bot.removeListener( 'action' );
pot_bot = io( new_uri);
pot_bot.on('action', function(data) { console.log('unique data '+data.hi);});
}
if ( button1.clicked )
switch_to_server( '12.12.12.12:3223' );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.