Foro
Buenas RosaFernández
No enredo el debate compañera, le explico no solo como puede comprobarlo por sí misma, sino las razones.
¿Ha usado WinMTR y ha lanzado unos 100-200 paquetes contra el servidor en cuestión? Tiene la aplicación ya la ha usado antes en otros servidores donde la latencia era totalmente normal, y aquí parece o que se resiste a hacerlo o no pone los datos en cuestión. Y le aseguro que mejor prueba que ello no existe!!
En lo tocante a sus 3 puntos, y ya por curiosidad propia de saber por qué aparece o no con decimales (sí, lo he estudiado e investigado, me gusta saber el por qué de las cosas)
1º. Sí, se lo puedo explicar perfectamente. La diferencia radica en el código JavaScript del test de velocidad:
https://testdevelocidad.movistar.es/movispeed_v2/movispeed5.js
Es el código que, entre otras muchas coas, realiza el cálculo de la latencia y Jitter, y lo hace de dos maneras diferente. La primera, calculando él mismo (el navegador) la latencia, simplemente calcula el tiempo desde que lanza la petición y le llega la respuesta, el tiempo final menos el tiempo inicial es la latencia. Para el Jitter es similar y funciona del mismo modo, por eso en Jitter sucede lo mismo:
Función recibirResultadoPing
// se envía la petición, se captura el tiempo
r0 = Date.now();
// se vuelve a capturar el tiempo cuando llega la petición
r1 = Date.now();
// se resta el tiempo inicial al tiempo final para obtener la respuesta
var tiempo = r1-r0;
Date.now es una función que trabaja con milisegundos
La segunda forma, es recibir directamente del servidor de Movistar la latencia:
Función recibirResultadoPing2
var regTiempo = /\<tiempo\>([0-9\.]+)\</g;
var res = regTiempo.exec(pagina);
....
if (res.length > 0 && res[1] != undefined && res[1] != undefined) {
tiempo_ping2 = res[1];
}
Esta función extrae con una expresión regular, el valor que el servidor envía directamente. La expresión regular incluye el punto decimal
Es decir, por un lado calcula el valor en milisegundos el propio navegador (tiempo_ping), y por otro lado, el servidor nos envía él mismo el tiempo (tiempo_ping) que sí incluye decimales.
Ahora llega la magia... el siguiente código nos dice el valor que se muestra en el navegador web, el que tú lees:
Función ponerPingJitter
function ponerPingJitter(primeraVez) {
// ...
if (tiempo_ping2 != null && tiempo_ping2 != "") {
// SI existe un valor del servidor (ping2), muéstralo.
$("#numeroLatencia").html(recortar(tiempo_ping2, 5));
} else {
// SI NO hay valor del servidor, muestra el calculado por el navegador (ping).
$("#numeroLatencia").html(menor1(tiempo_ping));
}
}
Es decir, cuando el servidor te responde él con un valor dado, que es el que aparecerá en la petición ping2 (https://m4114.movispeed.es/apolo/ping2.php....), ese es el que prevalece. Si el servidor no te envía dicho valor, como ahora mismo ocurre la mayoría de las veces, el valor que verás será el que calcula el navegador. Esto además también lo puedes comprobar, si en Firefox te posicionas en la petición ping2.... y ves la respuesta del servidor, te saldrá algo como:
<?xml version="1.0"?>
<ping2>
<obs>No validar</obs>
<ip>TU_IP</ip>
<totales>2</totales>
<ok>0</ok>
<tiempo></tiempo>
<jitter></jitter>
</ping2>
En mi caso, el servidor no me responde nada en tiempo ni en jitter, con lo que en mi caso se va a usar el tiempo_ping:
Le he dicho a Firefox que me vigile en todo momento las variables que me interesan, tiempo_ping y tiempo_ping2 y que me detenga el código en la línea 712 que es el código que manda el valor al navegador. Se puede ver que el valor es el mismo, tiempo_ping2 es cero... porque el servidor no me devuelve a mi nada.
Posiblemente dependiendo del servidor al que uno se conecte, o simplemente pruebas A/B que realice Movistar, hace que el servidor responda o no con un valor concreto y dado. En tu caso lo está haciendo en determinados momentos. Repito, lo puedes comprobar, al igual que puedes usar WinMTR contra dicho servidor, puedes también mirar en Firefox la respuesta de la petición ping2, seguramente el valor que responda ahí sea exactamente el mismo que te aparecerá en latencia y en fluctuación (jitter)
2º. Por supuesto que el navegador puede tener tal precisión compañera. De lo contrario, los desarrolladores web no tendrían herramientas necesarias para todas las web que tenemos a día de hoy. No solo por razones como estas de medir rendimiento. Es imperativo para usos tan diversos como optimizaciones de carga, animaciones, sincronización de refresco de la pantalla incluso y FPS, realidad virtual... un laaaaaargo etc. Por ponerte un ejemplo muy sencillo, para mantener 60fps (imágenes por segundo) una animación o cualquier otra cosa, se necesita como mínimo 16.67. Es muy diferente que tarde 16.5ms a que tarde 17.5ms. Es más, hace unos años, todos los equipos sin importar el sistema operativo estuvieron comprometidos por una serie de vulnerabilidades llamadas Spectre y Meldown, estas para tener éxito requerían unas precisiones incluso de décimas de mlisegundos!! Tal es así, que los navegadores incluyen la mayoría incluso redondear ciertas precisiones tan bajas para evitar entre otras cosas estos ataques. Así que sí, que se alcanza sin problema esas precisiones.
3º. Ya he contestado a esto, en mi caso particular el servidor no me responde con ping2, con lo que el cálculo lo hace el navegador que es un valor redondeado. Es más, el valor que envía el servidor podría ser totalmente diferente al que calculase el navegador. Ya ha puesto imágenes de ello, y también he puesto imágenes asociadas con WinMTR a los mismos servidores para que se vea igualmente las discrepancias y similitudes
4º. Creo que está respondido previamente :)
En cualquier caso, como ya he comentado en varias ocasiones, tan solo tienes que lanzar WinMTR al servidor que ya pusiste previamente y que te dije en el post anterior y tú misma podrás comprobarlo, sin mano negra que manipule tu equipo. Por otro lado, también te he dado otro modo alternativo de comprobar lo que te estoy diciendo, mirando el valor devuelvo por el servidor, incluso te podría mostrar como paralizar el código para que vieses en tu caso los dos tiempos, uno con decimales y otro sin ellos. De todos modos si quieres aun más pruebas, ahora te pongo otra captura con decimales :)
En este caso, eso es lo que obtengo si fuerzo (de forma artificial ojo, no real) que el servidor me responda los valores de latencia y jitter.
Saludos.
Contenido relacionado
- 15-01-2025usuario_retirado