¿Qué está pasando realmente?
El evento Pong en el cliente no se dispara / dispara, incluso con pingInterval habilitado / configurado en el servidor
https://github.com/Tiboonn/socket.io-fiddle
En la bifurcación anterior, la versión de socket.io y socket.io-client son 3.0.0, en las que el evento 'pong' no funciona.
Si cambia ambas versiones en el packege.json a 2.3.0 y reinstala los paquetes, el evento 'pong' está funcionando
¿Lo que es esperado?
Espero que la latencia sea ms con el siguiente bloque de código en el lado del cliente
socket.on('pong', function (ms) {
console.log(ms)
})
Después de leer la documentación de la versión 3, noté que se eliminó el evento pong
, pero no se menciona en los cambios importantes.
¿Existe alguna solución alternativa en este momento?
También esto se menciona en el siguiente compromiso:
https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f
Parece que esta característica se eliminó debido a engine.io ...
@hadimostafapour ¡¡¡Buen descubrimiento !!! :)
Creo que tomaré el código del compromiso que mencionaste y lo implementaré yo mismo: D
¡Hola! Tiene toda la razón, esto debería estar incluido en la guía de migración.
Debería poder reproducir el comportamiento con:
// server-side
io.on("connection", (socket) => {
socket.on("ping", (cb) => {
if (typeof cb === "function")
cb();
});
});
// client-side
setInterval(() => {
const start = Date.now();
socket.volatile.emit("ping", () => {
const latency = Date.now() - start;
// ...
});
}, 5000);
@darrachequesne ¡¡ Gracias por el fragmento de código !!
Agregado aquí: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-% E2% 80% 9Cpong% E2% 80% 9D-event-for -recuperación-latencia
Gracias por los comentarios: +1:
Comentario más útil
¡Hola! Tiene toda la razón, esto debería estar incluido en la guía de migración.
Debería poder reproducir el comportamiento con: