Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connect a un server Amazon DCV e ottieni il primo frame
Il seguente tutorial mostra come preparare la pagina HTML per il client Web personalizzato, come autenticarsi e connettersi a un server Amazon DCV e come ricevere il primo frame di contenuto in streaming dalla sessione Amazon DCV.
Argomenti
Passaggio 1: prepara la tua pagina HTML
Nella tua pagina Web, devi caricare i JavaScript moduli necessari e aggiungere un elemento <div> HTML con un valore valido id in cui desideri che l'SDK Amazon DCV Web Client attiri il flusso di contenuti dal server Amazon DCV remoto.
Per esempio:
<!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>
Fase 2: Autenticazione, connessione e acquisizione del primo frame
Questa sezione mostra come completare il processo di autenticazione dell'utente, come connettere il server Amazon DCV e come ricevere il primo frame di contenuto dal server Amazon DCV.
Innanzitutto, dal index.js file importa l'SDK Amazon DCV Web Client. Può essere importato sia come modulo Universal Module Definition (UMD), in questo modo:
import "./dcvjs/dcv.js"
Altrimenti, a partire dalla versione1.1.0, può anche essere importato come ECMAScript Module (ESM) dal pacchetto corrispondente, in questo modo:
import dcv from "./dcvjs/dcv.js"
Definisci le variabili da utilizzare per archiviare l'oggetto Authentication, l'oggetto Connection e l'URL del server Amazon DCV.
let auth, connection, serverUrl;
Al caricamento dello script, registra la versione di Amazon DCV Web Client SDK e, al caricamento della pagina, chiama la main funzione.
console.log("Using Amazon DCV Web Client SDK version " + dcv.version.versionStr); document.addEventListener('DOMContentLoaded', main);
La main funzione imposta il livello di registro e avvia il processo di autenticazione.
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 } ); }
Le funzioni promptCredentialserror, e sono success funzioni di callback obbligatorie che devono essere definite nel processo di autenticazione.
Se il server Amazon DCV richiede le credenziali, la funzione di promptCredentials callback riceve la richiesta di credenziali dal server Amazon DCV. Se il server Amazon DCV è configurato per utilizzare l'autenticazione del sistema, è necessario fornire le credenziali di accesso. I seguenti esempi di codice presuppongono che il nome utente sia my_dcv_user e che la password sia. my_password
Se l'autenticazione fallisce, la funzione di error callback riceve un oggetto di errore dal server Amazon DCV.
Se l'autenticazione ha esito positivo, la funzione di success callback riceve una serie di coppie che include l'id di sessione (sessionId) e i token di autorizzazione (authToken) per ogni sessione a cui l'my_dcv_userutente può connettersi sul server Amazon DCV. Il seguente esempio di codice richiama la funzione di connessione e si connette alla prima sessione restituita nell'array.
Nota
Nel seguente esempio di codice, MY_DCV_USER sostituitelo con il vostro nome utente e MY_PASSWORD con la vostra password.
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); }
Connect al server Amazon DCV. Il metodo di firstFrame callback viene chiamato quando il primo frame viene ricevuto dal server Amazon DCV.
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); }); }
Bonus: crea automaticamente un modulo di accesso HTML
L'challengeoggetto viene restituito quando viene promptCredentials chiamata la funzione di callback. Include una proprietà denominata requiredCredentials che è una matrice di oggetti, un oggetto per credenziale richiesta dal server Amazon DCV. Ogni oggetto include il nome e il tipo della credenziale richiesta. È possibile utilizzare gli requiredCredentials oggetti challenge e per creare automaticamente un modulo di accesso HTML.
Il seguente esempio di codice mostra come eseguire questa operazione.
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)); }