socket.io 1.2.1如何在重新连接后解决双重事件

在socket.io的博客中说,在1.2.1版本中

“自述文件修复,以防止在重新连接的示例中的双重事件[@nkzawa]”

我为客户端和服务器下载了1.2.1版本,但是在重新连接之后仍然是两次调用事件。 或者我应该用自述文件做些什么?

我试过这种方式重新连接,它的工作,但我可以用它来生产。 这是不是很方便?

socket.disconnect() // remove socket object socket = undefined // connect again socket = io.connect({'forceNew':true}) 

正如我所说的是正确的方式,还是有缺点?

更新,添加代码

服务器端代码

 socket.on('client_emited', function(data){ socketIO.to('this socket id').emit('server_emitted'); }) 

客户端代码

 var socket; function connectSocket () { if (!socket) socket = io({'forceNew':true}); else socket.connect(); } socket.on('connect', function(){ console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT'); socket.emit('client_emited'); }); socket.on('server_emited', function(){ console.log('RECEIVED "server_emited" EVENT'); }); socket.connect(); // here console shows 'CONNECTED TO SOCK...' and 'RECEIVED "server_e...' 1 time socket.disconnect(); socket.connect(); // here console shows 'CONNECTED TO SOCK...' 2 times and 'RECEIVED "server_e...' 4 times time 

并且服务器接收两次“client_emit”事件

解决scheme是:

 socket.on('connect', function(){....}); 

改成

 socket.once('connect', function(){....}); 

有关更多信息,请阅读github上的问题