无论是意外断开连接、故意断开连接还是服务器重启,只要我使用
当客户端连接、断开连接并重新连接时,以上代码将产生以下日志:
编辑:经过进一步检查,发现客户端重新连接时会执行连接代码的不同部分两次。上述代码已更新以反映相关信息。
socket.disconnect();
断开连接,然后使用socket.connect();
重新连接,服务器都会运行我的握手代码两次。奇怪的是,即使服务器连接代码运行两次,在重新连接后我的数组中只有一个连接。以下是部分代码:io.on('connection', OnConnect);
function OnConnect(socket) {
var connection = { socket: socket, realIp: ip, token: GenerateConnToken() };
connections.push(connection);
console.log('Connected');
// Client will respond to this by emitting "client-send-info".
// This is emitted once on initial connect, but twice on reconnect.
socket.emit('acknowledge', connection.token);
socket.on('client-send-info', function() {
console.log('Client Sent Info');
});
socket.on('disconnect', function() {
console.log('Disconnected');
});
}
当客户端连接、断开连接并重新连接时,以上代码将产生以下日志:
为什么在重新连接时,连接代码会运行两次,但只创建一个连接对象?已连接
客户端发送信息
已断开连接
已连接
客户端发送信息
客户端发送信息
编辑:经过进一步检查,发现客户端重新连接时会执行连接代码的不同部分两次。上述代码已更新以反映相关信息。