Client for docker-exec-websocket-server.
Client:
var DockerClient = require('../lib/client.js');
var client = new DockerClient({
url: 'ws://localhost:8081/a' //whole url of websocket, preface with wss if secure
tty: 'true', //Whether or not we expect VT100 style output, also enables exit codes
command: '/bin/bash', //Command to be run, can be an array with options such as ['cat', '-E']
wsopts: {}, //Pass in websocket options for the underlying websocket
});
await client.execute();
process.stdin.pipe(client.stdin);
client.stdout.pipe(process.stdout);
client.stderr.pipe(process.stderr);
client.on('exit', (exitCode) => {
//exitCode is a number between 0 and 255
process.exit(exitCode);
});
There are also other client events:
open
signifies the opening of the websocketpause
andresume
signify when the server has paused/resumed sending datashutdown
signifies the server was shut downerror
signifies that some sort of internal error occured, and may carry a utf-8 payload
Ensure Docker is installed.
To test locally:
- Run
yarn install
to install the dependencies, including developer dependencies - Run
yarn test
- You can pass environment variables and commands to mocha as well, such as
DEBUG=* yarn test -f 'docker exec wc'
To test with docker-compose
, similar to CI:
- Run
docker-compose build --build-arg NODE_VERSION=16-bullseye
, or change to the desired Node.js image tag - Run
docker-compose run --rm test
- Repeat
docker-compose build ...
when the code changes or you want to try a different Node.js image.