![](/img/trans.png)
[英]How to get parameters in cloudformation template to launch using Amazon Go SDK?
[英]How to get started using NICE DCV SDK
我正在试用来自 AWS 的NICE DCV SDK ,文档链接在这里但我无法弄清楚如何运行文档页面上给出的示例。 我尝试在节点服务器上运行它但出现此错误:
ReferenceError: self is not defined
因此,如果有人可以帮助我开始使用该示例,那就太好了。
编辑:我也尝试从浏览器中简单地打开 index.html。
只需从开发人员指南中复制示例,因此具有:
索引.html
<!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
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
我们创建了 NICE DCV SDK 集成的演示。 请试用或从https://www.ni-sp.com/DCVSDK/下载
以下是 2 个文件,包括奖励登录表单和一些已修复的问题(请调整 main.js 中的 serverUrl):
索引.html
<!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
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));
}
如果有人想知道 Ni-sp 网站有效,而不是您的网站。 这是解决方案:
当信任(很可能是内部根 CA)时,web 服务器和 DCV 服务器都需要分配证书,并且连接到 Web 服务器的客户端必须具有根证书,以便它可以验证 web 服务器和 DCV 服务器证书.
我测试它工作正常。 如果没有有效的证书,您将收到异常“身份验证期间出错:无法与服务器 dcv.js 通信:2 [身份验证] Auth WebSocket 连接已关闭。代码 1006”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.