# ssp-client

> Simple Server Protocol Client

Latest version **0.0.2** (published 2018-07-05) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install ssp-client
pnpm add ssp-client
yarn add ssp-client
bun add ssp-client
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2018-07-05 |
| First published | 2018-05-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 122.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Red Hat Developers |
| Maintainers | sudhirverma |

## Links

- npm: https://www.npmjs.com/package/ssp-client
- Repository: https://github.com/sudhirverma/ssp-client
- Homepage: https://github.com/sudhirverma/ssp-client#readme
- Issues: https://github.com/sudhirverma/ssp-client/issues
- npm.io page: https://npm.io/package/ssp-client

## Recent versions

- 0.0.2 (latest) — 2018-07-05
- 0.0.1 — 2018-05-24
- 1.0.1 — 2018-05-22
- 1.0.0 — 2018-05-22

## README

# ssp-client
A simple client for the Simple Server Protocol (SSP) written in typescript.

Implements the API described [here](https://github.com/robstryker/org.jboss.tools.ssp/blob/master/api/src/main/java/org/jboss/tools/ssp/api/SSPClient.java) and [here](https://github.com/robstryker/org.jboss.tools.ssp/blob/master/api/src/main/java/org/jboss/tools/ssp/api/SSPServer.java).

See the [SSP repo](https://github.com/robstryker/org.jboss.tools.ssp) for further details about SSP.

## Installing

```sh
npm i ssp-client
```

## Usage
Basic "short" usage example, for full list of available methods, see [usage](USAGE.md).

```typescript
import { SSPClient, Protocol, ServerState } from "ssp-client";

// Use the host and port your SSP server is running on
const client = new SSPClient('localhost', 27511);

// Initiate the connection
await client.connect();

// Find suitable server in a directory and use the serverBeans to create a server called myServer
const serverBeans = await client.findServerBeans('path/to/your/server/root');
const serverHandle = await client.createServerSync(serverBeans[0], 'myServer');

// Alternatively, one can create a server directly from a path
const handle = await client.createServerSync('path/to/server', 'server');

// All 'sync' methods have an async alternative, in order to see when it completes, subscribe to the appropriate event
client.onServerAdded((handle) => {
    console.log(`Server ${handle.id} created`);
});
await client.createServerAsync('path/to/server', 'server');

// Starting a server:
//  subscribe to the server producing output
client.onServerOutputAppended((output) => {
    console.log(output.text);
});

//  subscribe to server state changes to see when it started/stopped
client.onServerStateChange((state) => {
    console.log(`Server state code is ${state.state}`);
    if (state.state === ServerState.STARTED) {
        console.log('Server started');
    } else if (state.state === ServerState.STOPPED) {
        console.log('Server stopped');
    }
});

//  get the starting parameters, we are using the normal run mode here
const attributes = await client.getServerRequiredLaunchAttributes({id: handle.id, mode: 'run'});
const params: Protocol.LaunchParameters = {
    mode: 'run',
    params: {
        id: handle.id,
        serverType: handle.type.id,
        attributes: attributes
    }
};

//  finally start the server
await client.startServerAsync(params);

// Stopping a server, use force at your will
await client.stopServerAsync({ id: handle.id, force: false });

// When all is done you can disconnect the client
client.disconnect();
// or even shut down the entire SSP server instead - don't use disconnect in this case
client.shutdownServer();
```

## Running unit tests

Unit tests are located in `test`. To run all unit tests:

```
npm run test
```

## publish

To publish our module, run the command

```sh
npm publish
```

## Build 

```sh
npm run build
```

---
_Source: https://npm.io/package/ssp-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
