Acceso a un servicio en tiempo real con WebSocket
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 encuentra en la capa de aplicación del modelo OSI. El protocolo de comunicación de WebSocket fue establecido por el IETF como estándar RFC 6455 en 2011 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 es exitoso, se puede establecer una conexión persistente entre ellos y se puede realizar la transmisión de datos bidireccional.
Requisitos previos
- Se ha desplegado un servicio en tiempo real con WebSocket habilitado.
- La imagen para importar la aplicación de IA es compatible con WebSocket.
Restricciones
- WebSocket solo soporta el despliegue de servicios sincrónicos en tiempo real.
- WebSocket solo admite servicios en tiempo real desplegados mediante aplicaciones de IA importadas a partir de imágenes personalizadas.
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:
- Acceso autenticado con un token
- Acceso autenticado con una AK/SK
- Acceso autenticado con una aplicación
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.
- Establezca una conexión de WebSocket.
- Intercambie datos entre el cliente de WebSocket y el servidor.
- Establecer una conexión de WebSocket.
- 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 1 Solicitud de WebSocket
- 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 2 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 3 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).
- 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).
- 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. Tome 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 4 Envío de datos