es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

iPhone enviando un paquete de alerta cifrado.

Antecedentes: He creado una aplicación híbrida en angular utilizando la biblioteca Capacitor. Todo funciona bien para el navegador y la aplicación móvil de Android y la aplicación móvil de iOS. En el backend, estamos utilizando hardware que actúa como un servidor. El hardware y nuestro dispositivo móvil están conectados al mismo enrutador y estamos accediendo al hardware utilizando una dirección IP. Además, hemos agregado un certificado autofirmado en el hardware y estamos utilizando HTTPS al comunicarnos con el hardware.

Problema: El único problema que enfrentamos actualmente con la aplicación de iOS es su lentitud. Realicé algunas investigaciones en el frontend utilizando Wireshark y llegué a un punto donde la aplicación de iOS está enviando el paquete de reconocimiento seguido de un paquete de alerta cifrado cuando recibe una respuesta del servidor. Esto ocurre para cada solicitud. Después de depurar más en el servidor, descubrí que una vez que recibe una alerta cifrada, cierra el socket. Luego, realiza el handshake de sesión nuevamente, abre el socket nuevamente y luego procesa la solicitud. Entonces, básicamente, el siguiente proceso se repite cada vez:

Realización del handshake de sesión
Apertura de socket
Procesamiento de solicitud
Envío de respuesta
Cierre de socket

En cambio, en un dispositivo Android, este proceso solo ocurre la primera vez que se envía la solicitud y luego se realiza la transmisión de datos sin cerrar el socket. A continuación, se muestran las capturas de pantalla de Wireshark para Android y iOS:

Captura de pantalla de iOS:
Imagen: iOS

Captura de pantalla de Android:
Imagen: Android

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución a un Error de Lentitud en la Aplicación de iOS al Comunicarse con el Servidor

    Descripción del Problema

    La aplicación de iOS experimenta lentitud al comunicarse con el servidor. Después de utilizar Wireshark para depurar, se descubrió que la aplicación de iOS envía un paquete de acuse de recibo seguido de un paquete de alerta encriptado. Como resultado, el servidor cierra el socket, realiza un saludo de sesión, vuelve a abrir el socket, procesa la solicitud y repite este proceso para cada solicitud. Esto está causando el problema de lentitud.

    Solución

    • Causa Raíz del Problema: El paquete de alerta encriptado enviado por la aplicación de iOS provoca que el servidor cierre el socket, lo que resulta en el proceso repetido de saludo de sesión, apertura de socket, procesamiento de solicitud y cierre de socket.
    • Solución: El servidor cierra el socket porque no puede validar el certificado autofirmado que se está utilizando para la comunicación HTTPS. Para resolver esto, instala el certificado autofirmado en el dispositivo de iOS que se utiliza para las pruebas, haciéndolo así de confianza. También actualiza el servidor para que acepte el certificado autofirmado presentado por la aplicación de iOS sin cerrar el socket.

    • Pasos para instalar el certificado autofirmado en el dispositivo de iOS:

      1. Transfiere el certificado autofirmado al dispositivo de iOS.
      2. Abre la aplicación “Configuración” y navega hasta “General > Información > Configuración de Confianza de Certificados”.
      3. Habilita el interruptor para el certificado autofirmado instalado en la sección “Habilitar Confianza Completa para Certificados Raíz”.

    Al completar estos pasos, el certificado autofirmado será confiable y el servidor no cerrará el socket, ya que podrá validar el certificado presentado por la aplicación de iOS, resolviendo así el problema de lentitud.

Comments are closed.