在socket.io的博客中,它说在1.2.1版本中:
"README修复,以防止重新连接时示例中出现双重事件[@nkzawa]"
我下载了客户端和服务器的1.2.1版本,但在重新连接后,它仍然调用事件两次。还是我应该在readme文件中做些什么?
我尝试了这种方式进行重新连接,并且它可以工作,但是我能在生产中使用吗?这是正确的方式吗?
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"事件。