首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何开始使用NICE DCV SDK

如何开始使用NICE DCV SDK
EN

Stack Overflow用户
提问于 2021-04-28 23:47:43
回答 2查看 286关注 0票数 0

我正在尝试来自亚马逊网络服务的NICE DCV SDK,文档链接here,但我不知道如何运行文档页面上给出的示例。我尝试在节点服务器上运行它,但得到以下错误:

代码语言:javascript
复制
ReferenceError: self is not defined

所以,如果有人能帮助我开始使用example,那就太好了。

编辑:我也尝试过简单地从浏览器打开index.html。

EN

回答 2

Stack Overflow用户

发布于 2021-04-30 21:56:50

只需从开发人员指南中复制example,因此具有:

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>DCV first connection</title>
    </head>
    <body>
        <script type="module" src="main.js"></script>
        <div id="dcv-display"></div>
    </body>
</html>

main.js

代码语言:javascript
复制
import "./dcvjs/dcv.js";

let auth,
    connection,
    serverUrl;

function onPromptCredentials(auth, challenge) {
    // Let's check if in challenge 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(_, error) {
    console.log("Error during the authentication: ", error.message);
}

// We connect to the first session returned
function onSuccess(_, result) {
    let {sessionId, authToken} = {...result[0]};
    connect(sessionId, authToken);
}

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);
    });
}

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
        }
    );
}

console.log("Using NICE DCV Web Client SDK version " + dcv.version.versionStr);
document.addEventListener('DOMContentLoaded', main);

更改用户名、密码和serverUrl应该可以在web环境中工作。

我还可以通过如下示例设置的node.js服务器为其提供服务:https://developer.mozilla.org/en-US/docs/Learn/Server-side/Node_server_without_framework

票数 1
EN

Stack Overflow用户

发布于 2021-04-30 22:03:03

我们已经创建了一个很好的DCV SDK集成的演示。请试用或从https://www.ni-sp.com/DCVSDK/下载

这里有两个文件,包括奖励登录表单和几个已修复的问题(请调整main.js中的serverUrl ):

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>DCV first connection</title>
    </head>
    <body>
        <script type="module" src="main.js"></script>
        <div id="dcv-display"></div>
    </body>
</html>

main.js

代码语言:javascript
复制
import "./dcvjs/dcv.js"
let auth,
    connection,
    serverUrl;

console.log("Using NICE DCV Web Client SDK version " + dcv.version.versionStr);
document.addEventListener('DOMContentLoaded', main);

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: onPromptCredentials2,
            error: onError,
            success: onSuccess
        }
    );
}


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: "YOURUSER", password: "YOUR_PW"})
    } 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);
}

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);
    });
}


function submitCredentials (e) {
    var credentials = {};
    fieldSet.childNodes.forEach(input => credentials[input.id] = input.value);
    auth.sendCredentials(credentials);
    e.preventDefault();
}

var fieldSet;

function createLoginForm () {
    var submitButton = document.createElement("button");

    submitButton.type = "submit";
    submitButton.textContent = "Login";

    var 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 onPromptCredentials2 (_, credentialsChallenge) {
    createLoginForm();
    credentialsChallenge.requiredCredentials.forEach(challenge => addInput(challenge.name));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67303552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档