Socket.io: el evento de reconexión del cliente 3.0.0+ falló.
Cambie a la versión 2.3.1 y funciona.
const io = require('socket.io-client');
let socket = io.connect('ws://127.0.0.1:8000', {
"transports": ['websocket', 'polling'],
reconnection: true
});
socket.on('connect', function(data){
onlineFlag = true;
console.log(data + ' - connect');
});
socket.on('connect_error', function(data){
console.log(data + ' - connect_error');
});
socket.on('connect_timeout', function(data){
console.log(data + ' - connect_timeout');
});
socket.on('error', function(data){
console.log(data + ' - error');
});
socket.on('disconnect', function(data){
onlineFlag = false;
console.log(data + ' - disconnect');
});
socket.on('reconnect', function(data){
console.log(data + ' - reconnect');
});
socket.on('reconnect_attempt', function(data){
console.log(data + ' - reconnect_attempt');
});
socket.on('reconnecting', function(data){
console.log(data + ' - reconnecting');
});
socket.on('reconnect_error', function(data){
console.log(data + ' - reconnect_error');
});
socket.on('reconnect_failed', function(data){
console.log(data + ' - reconnect_failed');
});
socket.on('ping', function(data){
console.log(data + ' - ping');
});
socket.on('pong', function(data){
console.log(data + ' - pong');
});
Yo también tuve este problema; ¡¡Me lo imaginé!! Es por diseño:
https://socket.io/docs/v3/migrating-from-2-x-to-3-0/index.html#The -Socket-instance-will-not-longer-forward-the-events-emitted- por-su-Gerente
@newpanjing ¡hola! ¿Qué quiere decir con "reconectar el evento todo falló"?
Como señaló @tannerkrewson (¡gracias!), La instancia de Socket ya no emite ningún evento de reconexión.
// no longer emitted
socket.on("reconnect_attempt", () => {});
// but you can listen to the events emitted by the Manager instance (the io attribute)
socket.io.on("reconnect_attempt", () => {});
¿Sería posible tener un mensaje de advertencia en la consola si alguien intenta usar esos eventos en el propio socket? Creo que sería muy útil para las personas que migran, en lugar de fallar silenciosamente. 😄
Comentario más útil
@newpanjing ¡hola! ¿Qué quiere decir con "reconectar el evento todo falló"?
Como señaló @tannerkrewson (¡gracias!), La instancia de Socket ya no emite ningún evento de reconexión.