在Socket.io上从客户端更改服务器

时间:2016-01-05 21:32:55

标签: javascript 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');

一切都是正确的,问题是当我覆盖变量pot_bot时,我希望在新服务器发出它时调用.on('action')。上面的代码示例不是这种情况。

有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

我建议在覆盖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' );