Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I created a node.js application which kindof works.
It outputs that it has selected the field, but I do not see it changing in my app.
How to make sure I am using exactly the same session as the app I am seeing?
....
var http = require('http');
const enigma = require('enigma.js');
const WebSocket = require('ws');
const path = require('path');
const fs = require('fs');
var promise = require('bluebird');
const schema = require('enigma.js/schemas/12.67.2.json');
const certificatesPath = `./`;
const readCert = filename => fs.readFileSync(path.resolve(__dirname, certificatesPath, filename));
const userDirectory = 'demo';
const userId = 'demo';
const senseHost = 'localhost';
const enginePort = 4747;
//d494ab72-fb06-4bc2-9de8-2b52e0c73b67
var session = createSession();
//'X-Qlik-User': `UserDirectory=${encodeURIComponent(userDirectory)}; UserId=${encodeURIComponent(userId)}`,
function createSession() {
const requestOptions = {
ca: [readCert('root.pem')],
key: readCert('client_key.pem'),
cert: readCert('client.pem'),
headers: {
'x-qlik-xrfkey' : 'abcdefghijklmnop',
'X-Qlik-User': `UserDirectory=${encodeURIComponent(userDirectory)}; UserId=${encodeURIComponent(userId)}`,
},
rejectUnauthorized: false
};
const firstAppId = 'f4dc174f-2f9e-49ef-83f9-6c6869f1dc09';
return enigma.create({
schema,
// We use the configured proxyPrefix here to make sure Sense uses the correct
// authentication:
url: `wss://localhost:4747`,
// Please notice the requestOptions parameter when creating the websocket:
createSocket: url => new WebSocket(url, requestOptions),
}).open().then(global => global.openDoc(firstAppId)).then((app) => {
console.log(`Opened app ${app.id}`);
return app.getField('ReportingCountry.JurisdictionName').then((f) => {
return f.selectAll().then((g) => {
console.log('selectAll',g);
return app.session.close();
}).catch((err) => {
console.log("There was an error @getScript" + err);
});
}).catch((err) => {
console.log("There was an error @getScript" + err);
});
})
.catch((err) => {
console.log("There was an error @getScript" + err);
});
}
Desktop or Enterprise? Session sharing doesn't work in Desktop.
-Rob
Enterprise April 2018.
Funny thing is that the Engine Explorer works...
Is your other app a mashup that is also authenticating with certs?
No it is an app in the hub authenticating via windows authentication.
There is however a reverse proxy inbetween. that maps 443 -> 8443.
As said the engine explorer works and makes the change visible.
My version is executing, but not making the change visible.
I *assume* it is because they are not talking to the same session.
I believe different auth mechanism will always equal different session. You might confirm that over on the slack channel.
The engine explorer works because it too is using NTLM auth.
-Rob