slow internet check javascript ios safari wifi 3g

javascript - internet - ¿Cómo detectas la conexión 3G vs. Wifi en un safari móvil?



javascript get connection status (3)

Aunque no puede usar los datos de un navegador para detectar si el usuario está usando una conexión Wi-Fi o celular, la captura de la IP del usuario puede ser una forma de diferenciar entre una conexión Wifi y una conexión celular.

En este artículo acerca de cómo los celulares afectan su dirección IP ( http://classroom.synonym.com/wifi-change-ip-17586.html ), indica lo siguiente:

Mientras esté en Wi-Fi, la IP pública de su dispositivo coincidirá con todas las demás computadoras en su red, y su enrutador asigna una IP local. Mientras utiliza una conexión celular, su operador de telefonía celular asigna una IP pública. La conexión a Internet móvil no utiliza un enrutador, por lo que su dispositivo no tendrá una IP local.

IF ip = localIp, luego connection = wifiConnection

IF ip = publicIp, luego connection = cellularConnection

Aquí hay una captura de pantalla de mi IP cuando estoy en el celular:

Aquí hay una captura de pantalla de mi IP (justo después de apagar el celular) en Wifi:

Esta podría ser una respuesta al problema sin la ayuda del navegador.

Estoy preguntando específicamente sobre javascript en una página web móvil, no en una aplicación de object-c. ¿Hay algo como Apple Reachability para javascript para que pueda saber cuándo se realiza o cambia la conexión de Edge, 3G o Wifi?


En este momento, esta limitación ha mejorado, pero todavía hay restricciones con la API de información de red admitida en los diferentes navegadores (móviles o no), https://caniuse.com/#search=network

Si esto le ayuda, en nuestro caso, ya que nuestra aplicación móvil específica es híbrida y desarrollada utilizando Ionic, hemos podido hacerlo en iOs o Android utilizando este complemento de cordova: https://github.com/apache/cordova-plugin-network-information que funciona a la https://github.com/apache/cordova-plugin-network-information .


No, a menos que los navegadores comiencen a dar esta información a través del DOM, que actualmente no lo hacen. Hay un navigator objetos javascript que contiene muchas cosas pero no lo que estás buscando. También leí en las noticias recientemente que algunos operadores de telefonía celular estaban agregando cookies a las solicitudes HTTP realizadas en sus teléfonos. Se encontró que estaban agregando ID de clientes a las cookies (¡una gran brecha de seguridad!).

Mobile Safari agrega algunas adiciones nuevas de DOM pero no lo que estás pidiendo.

A falta de estas opciones, no puedes. Las capas del Protocolo de Internet están destinadas a encapsular y ocultar los detalles de las capas inferiores. No puede detectar Edge, 3G o Wifi más de lo que puede detectar cable, DSL u ópticas más finas.

Finalmente, incluso si pudiera obtener esta información, no le serviría de nada a menos que tuviera detalles de cada nodo en su conexión TCP. Por ejemplo, podría tener la siguiente configuración:

iPad ---WiFi----> iPhone''s Hotspot ---3G---> Carrier ---unknown--->>>

Apéndice

En 2012-2013, el W3C desarrolló la API de información de red, cuyo objetivo era proporcionar "una interfaz para que las aplicaciones web accedan a la información de conexión subyacente del dispositivo" . En ese momento , la API estipulaba que se podría obtener un ancho de banda "estimado" para el navegador a través de navigator.connection.bandwidth . A partir de abril de 2014, ese trabajo ya se ha suspendido !!

Actualización: A partir del 20 de octubre de 2015, el trabajo continúa en esta API. Puede encontrar los últimos borradores del Editor para la API de información de red en las páginas de github del W3C.