Let's create some NODE.JS application that will communicate with active terminal and make it runnable from Linux bash shell...
Prerequisites
-
Install Node.JS
-
Create folder for your project and add file package.json
-
Open package.json with text editor and add minimum required, then save it
{}
-
Position to project folder from console and execute following to install required lib
npm install ws --save npm install mem-cache --save
Program
Create index.js in project folder and add code shown at the end of the page.
Code can be executed as bash shell script simply by calling ./index.js or with Node.JS itself by executing from command line with node index.js.
index.js file
#!/usr/bin/env node
const WebSocket = require('ws');
const Cache = require('mem-cache');
var cache = new Cache();
var ws = new WebSocket('ws://localhost:5250')
/**
* Store request into cache and make remote request
*/
function request(req, callback) {
// store request into cache for 30 seconds
cache.set(req.rid, {callback : callback}, 30000);
// send request to GreenScreens Native Terminal
ws.send(JSON.stringify(req));
}
/**
* Receive response from terminal and process data
*/
ws.on('message', function(resp, raw) {
// parse received text data into JSON
let data = JSON.parse(resp);
// take rid from response and look into cache
let cdata = cache.get(data.rid);
// if request stored into cache and have callback function, execute it
if (cdata && typeof cdata.callback === 'function') {
cdata.callback(data);
}
});
/**
* Signal when connection established
*/
ws.on('open', function open() {
// prepare A-HLL API command
let req = {"cmd": "echo", "rid": Date.now()};
// send A-HLL command to terminal and attach response handler
request(req, function(resp){
console.log(`Response arrived from terminal for request ID: ${resp.rid}`);
});
});