Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Conéctate a un DCV servidor de Amazon y obtén el primer fotograma
El siguiente tutorial te muestra cómo preparar tu HTML página para tu cliente web personalizado, cómo autenticarte y conectarte a un DCV servidor de Amazon y cómo recibir el primer fotograma del contenido reproducido en streaming de la sesión de AmazonDCV.
Temas
Paso 1: Prepara tu página HTML
En su página web, debe cargar los JavaScript módulos necesarios y debe añadir un <div>
HTML elemento con un id
lugar válido en el que desee que Amazon DCV Web Client SDK dibuje el flujo de contenido desde el DCV servidor remoto de Amazon.
Por ejemplo:
<!DOCTYPE html> <html lang="en" style="height: 100%;"> <head> <title>DCV first connection</title> </head> <body style="height: 100%;"> <div id="root" style="height: 100%;"></div> <div id="dcv-display"></div> <script type="module" src="index.js"></script> </body> </html>
Paso 2: Autenticar, conectar y obtener el primer fotograma
En esta sección se muestra cómo completar el proceso de autenticación de usuarios, cómo conectar el DCV servidor de Amazon y cómo recibir el primer marco de contenido del DCV servidor de Amazon.
En primer lugar, desde el index.js
archivo, importe el Amazon DCV Web ClientSDK. Se puede importar como un módulo de definición de módulo universal (UMD), de la siguiente manera:
import "./dcvjs/dcv.js"
De lo contrario, a partir de la versión1.1.0
, también se puede importar como un ECMAScript Module (ESM) desde el paquete correspondiente, de la siguiente manera:
import dcv from "./dcvjs/dcv.js"
Defina las variables que se utilizarán para almacenar el objeto Authentication, el objeto Connection y el DCV servidor AmazonURL.
let auth, connection, serverUrl;
Al cargar el script, registre la SDK versión de Amazon DCV Web Client y, al cargar la página, llame a la main
función.
console.log("Using Amazon DCV Web Client SDK version " + dcv.version.versionStr); document.addEventListener('DOMContentLoaded', main);
La función main
establece el nivel de registro e inicia el proceso de autenticación.
function main () { console.log("Setting log level to INFO"); dcv.setLogLevel(dcv.LogLevel.INFO); serverUrl = "https://your-dcv-server-url:port/"; console.log("Starting authentication with", serverUrl); auth = dcv.authenticate( serverUrl, { promptCredentials: onPromptCredentials, error: onError, success: onSuccess } ); }
Las funciones promptCredentials
, error
y success
son funciones de devolución de llamada obligatorias que deben definirse en el proceso de autenticación.
Si el DCV servidor de Amazon solicita credenciales, la función de promptCredentials
devolución de llamada recibe la impugnación de credenciales solicitada del servidor de Amazon. DCV Si el DCV servidor de Amazon está configurado para usar la autenticación del sistema, se deben proporcionar las credenciales de inicio de sesión. En los siguientes ejemplos de código se da por sentado que el nombre de usuario es my_dcv_user
y que la contraseña es my_password
.
Si la autenticación falla, la función de error
devolución de llamada recibe un objeto de error del DCV servidor de Amazon.
Si la autenticación se realiza correctamente, la función de success
devolución de llamada recibe una matriz de parejas que incluye el identificador de sesión (sessionId
) y los tokens de autorización (authToken
) de cada sesión a la que el my_dcv_user
usuario puede conectarse en el servidor de AmazonDCV. El siguiente ejemplo de código llama a la función connect y se conecta a la primera sesión devuelta en la matriz.
nota
En el siguiente ejemplo de código, sustituya MY_DCV_USER
por su propio nombre de usuario y MY_PASSWORD
por su propia contraseña.
function onPromptCredentials(auth, challenge) { // Let's check if in challege we have a username and password request if (challengeHasField(challenge, "username") && challengeHasField(challenge, "password")) { auth.sendCredentials({username: MY_DCV_USER, password: MY_PASSWORD}) } else { // Challenge is requesting something else... } } function challengeHasField(challenge, field) { return challenge.requiredCredentials.some(credential => credential.name === field); } function onError(auth, error) { console.log("Error during the authentication: " + error.message); } // We connect to the first session returned function onSuccess(auth, result) { let {sessionId, authToken} = {...result[0]}; connect(sessionId, authToken); }
Conéctate al DCV servidor de Amazon. El método firstFrame
callback se invoca cuando se recibe el primer fotograma del DCV servidor de Amazon.
function connect (sessionId, authToken) { console.log(sessionId, authToken); dcv.connect({ url: serverUrl, sessionId: sessionId, authToken: authToken, divId: "dcv-display", callbacks: { firstFrame: () => console.log("First frame received") } }).then(function (conn) { console.log("Connection established!"); connection= conn; }).catch(function (error) { console.log("Connection failed with error " + error.message); }); }
Bonificación: crea automáticamente un formulario de HTML inicio de sesión
El objeto challenge
se devuelve cuando se llama a la función de devolución de llamada promptCredentials
. Incluye una propiedad denominada requiredCredentials
matriz de objetos, un objeto por cada credencial que solicite el DCV servidor de Amazon. Cada objeto incluye el nombre y el tipo de la credencial solicitada. Puede usar los requiredCredentials
objetos challenge
y para crear automáticamente un formulario de inicio de HTML sesión.
El siguiente ejemplo de código muestra cómo hacerlo.
let form, fieldSet; function submitCredentials (e) { var credentials = {}; fieldSet.childNodes.forEach(input => credentials[input.id] = input.value); auth.sendCredentials(credentials); e.preventDefault(); } function createLoginForm () { var submitButton = document.createElement("button"); submitButton.type = "submit"; submitButton.textContent = "Login"; form = document.createElement("form"); fieldSet = document.createElement("fieldset"); form.onsubmit = submitCredentials; form.appendChild(fieldSet); form.appendChild(submitButton); document.body.appendChild(form); } function addInput (name) { var type = name === "password" ? "password" : "text"; var inputField = document.createElement("input"); inputField.name = name; inputField.id = name; inputField.placeholder = name; inputField.type = type; fieldSet.appendChild(inputField); } function onPromptCredentials (_, credentialsChallenge) { createLoginForm(); credentialsChallenge.requiredCredentials.forEach(challenge => addInput(challenge.name)); }