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
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
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:
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.