Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ ModelArts/ Prácticas recomendadas/ Inferencia del modelo/ Desarrollo de procesos completos de servicios de WebSocket en tiempo real
Actualización más reciente 2024-09-20 GMT+08:00

Desarrollo de procesos completos de servicios de WebSocket en tiempo real

Contexto

WebSocket es un protocolo de transmisión de red que admite comunicación dúplex completa a través de una sola conexión de TCP. Se sitúa en la capa de aplicación en un modelo de OSI. El protocolo de comunicación de WebSocket fue establecido por el IETF en 2011 como estándar RFC 6455 y complementado por RFC 7936. La API de WebSocket en Web IDL está estandarizada por W3C.

WebSocket simplifica el intercambio de datos entre el cliente y el servidor y permite que el servidor envíe datos de forma proactiva al cliente. En la API de WebSocket, si el handshake inicial entre el cliente y el servidor tiene éxito, se establecerá una conexión persistente entre ellos y los datos podrán transferirse bidireccionalmente.

Requisitos previos

  • Tiene experiencia en el desarrollo de Java y está familiarizado con el empaquetado de JAR.
  • Tiene conocimientos básicos y métodos de invocación de WebSocket.
  • Está familiarizado con el método de creación de una imagen con Docker.

Restricciones

  • WebSocket solo soporta el despliegue de servicios en tiempo real.
  • WebSocket solo admite servicios en tiempo real desplegados mediante aplicaciones de IA importadas a partir de imágenes personalizadas.

Preparaciones

Antes de utilizar WebSocket de ModelArts para la inferencia, traiga su propia imagen personalizada. La imagen personalizada debe ser capaz de proporcionar servicios de WebSocket completos en un entorno autónomo, por ejemplo, completar handshakes de WebSocket e intercambiar datos entre el cliente y el servidor. La inferencia del modelo se implementa en la imagen personalizada, lo que incluye descargar el modelo, cargar el modelo, realizar el preprocesamiento, completar la inferencia y ensamblar el cuerpo de respuesta.

Carga de la imagen en SWR

Cargue la imagen local en SWR. Para obtener más detalles, consulte ¿Cómo puedo iniciar sesión en SWR y cargar imágenes en él?

Creación de una aplicación de IA con la imagen

  1. Inicie sesión en la consola de gestión de ModelArts, seleccione AI Application Management > AI Applications y haga clic en Create bajo My AI Applications. Aparece la página para crear una aplicación de IA.
  2. Configure la aplicación de IA.
    • Meta Model Source: Seleccione Container image.
    • Container Image Path: seleccione la ruta especificada en Carga de la imagen en SWR.
    • Container API: configure este parámetro en función de los requisitos del sitio.
    • Health Check: conserve la configuración predeterminada. Si se ha configurado la comprobación de estado en la imagen, configure los parámetros de comprobación de estado en función de los configurados en la imagen.
      Figura 1 Parámetros de aplicación de IA
  3. Haga clic en Create now. En la lista de aplicaciones de IA que aparece en pantalla, compruebe el estado de la aplicación de IA. Cuando cambia a Normal, se crea la aplicación de IA.

Despliegue de la aplicación de IA como servicio en tiempo real

  1. Inicie sesión en la consola de gestión de ModelArts, seleccione Service Deployment > Real-Time Services y haga clic en Deploy.
  2. Configure el servicio.
  3. Haga clic en Next, confirme la configuración y luego haga clic en Submit. En la lista de servicios en tiempo real a la que se le redirigirá, compruebe el estado del servicio. Cuando cambia a Running, se despliega el servicio en tiempo real.

Invocación a un servicio en tiempo real de WebSocket

WebSocket no requiere la autenticación adicional. ModelArts WebSocket es compatible con WebSocket Secure, independientemente de si WebSocket o WebSocket Secure está activado en la imagen personalizada. WebSocket Secure solo admite la autenticación unidireccional, desde el cliente hasta el servidor.

Puede utilizar uno de los siguientes métodos de autenticación proporcionados por ModelArts:

La siguiente sección utiliza el software de GUI Postman para predicción y la autenticación de token como ejemplo para describir cómo invocar a WebSocket.

  1. Establezca una conexión de WebSocket.
  2. Intercambie datos entre el cliente de WebSocket y el servidor.
  1. Establecer una conexión de WebSocket.

    1. Abra Postman de una versión posterior a 8.5, por ejemplo, 10.12.0. Haga clic en en la esquina superior izquierda y elija File > New. En el cuadro de diálogo mostrado, seleccione WebSocket Request (versión de beta actual).
      Figura 3 Solicitud de WebSocket
    2. Configure los parámetros para la conexión de WebSocket.

      Seleccione Raw en la esquina superior izquierda. No seleccione Socket.IO (un tipo de implementación de WebSocket que requiere que tanto el cliente como el servidor funcionen con Socket.IO). En el cuadro de direcciones, introduzca la API Address obtenida en la ficha Usage Guides de la página de detalles del servicio. Si hay una dirección URL detallada en la imagen personalizada, agréguela al final de la dirección. Si queryString está disponible, agregue este parámetro a la columna params. Agregue información de autenticación al encabezado. El encabezado varía según el modo de autenticación, que es el mismo que el del servicio de inferencia compatible con HTTPS. Haga clic en Connect en la esquina superior derecha para establecer una conexión de WebSocket.

      Figura 4 Obtención de la dirección API
      • Si la información es correcta, aparecerá CONNECTED en la esquina inferior derecha.
      • Si no se puede establecer la conexión y el código de estado es 401, verifique la autenticación.
      • Si aparece una palabra clave como WRONG_VERSION_NUMBER, verifique si el puerto configurado en la imagen personalizada es el mismo que el configurado en WebSocket o WebSocket Secure.

      A continuación se muestra una conexión de WebSocket establecida.

      Figura 5 Conexión establecida

      Verifique preferentemente el servicio de WebSocket proporcionado por la imagen personalizada. El tipo de implementación de WebSocket varía según la herramienta utilizada. Los problemas posibles son los siguientes: se puede establecer una conexión de WebSocket pero no se puede mantener, o la conexión se interrumpe tras una solicitud y es necesario volver a conectarse. ModelArts solo garantiza que no afectará al estado de WebSocket en una imagen personalizada (la dirección de API y el modo de autenticación pueden cambiarse en ModelArts).

  2. Intercambie datos entre el cliente de WebSocket y el servidor.

    Una vez establecida la conexión, WebSocket utiliza TCP para la comunicación dúplex completa. El cliente de WebSocket envía datos al servidor. Los tipos de implementación varían dependiendo del cliente, y el paquete de lib también puede ser diferente para el mismo idioma. Aquí no se tienen en cuenta los distintos tipos de implementación.

    El formato de los datos enviados por el cliente no está limitado por el protocolo. Postman admite datos de texto, JSON, XML, HTML y Binary. Tomemos el texto como ejemplo. Introduzca los datos de texto en el cuadro de texto y haga clic en Send a la derecha para enviar la solicitud al servidor. Si el texto es demasiado grande, Postman puede ser suspendido.

    Figura 6 Envío de datos